vtkStandardNewMacro()出现错误的问题

自己实现一个继承vtk的类时

要使用

vtkStandardNewMacro()

如果全部类直接在头文件中实现,然后最后加上

vtkStandardNewMacro()这句 会出现编译出错,例如参数不匹配

解决办法:

vtkStandardNewMacro()是用在源文件中的  放在实现中才不会出错。

例子如下:

头文件:

#pragma once
#include"stdafx.h"
#include<vtkInteractorStyleImage.h>
//#include<vtkObject.h>
#include <vtkObjectFactory.h>

class VTK_EXPORT BMPInteractorStyle : public vtkInteractorStyleImage
{
public:
static BMPInteractorStyle* New();
vtkTypeMacro(BMPInteractorStyle, vtkInteractorStyleImage);

virtual void OnLeftButtonDown();

};

源文件:

#include"stdafx.h"
#include"BMPInteractorStyle.h"

vtkStandardNewMacro(BMPInteractorStyle);
void BMPInteractorStyle::OnLeftButtonDown()
{
//std::cout << "Pressed left mouse button." << std::endl;
// Forward events
vtkInteractorStyleImage::OnLeftButtonDown();
}

这样编译就不会出错了

原文地址:https://www.cnblogs.com/qwcbeyond/p/3111620.html