自己实现一个继承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();
}
这样编译就不会出错了