如何子类VTKACTOR

how to subclass vtkActor?

本文关键字:VTKACTOR 子类 何子类      更新时间:2023-10-16

我正在尝试为VTKACTOR类子类。但是我的班级一直遇到错误"对`vtkintralatticeObject :: new()的未定义引用

我找到了这个链接。我尝试了它,但我得到了"对vtkintralatticeObject :: vtkintralatticeObject()的不确定引用"。我也不是100%确信这是必经之路。我设法获得了以下示例进行工作。因此,我很难理解与我的代码有什么不同。

所以这是我的代码类。
vtkintralatticeObject.h

#ifndef VTKINTRALATTICEOBJECT_H
#define VTKINTRALATTICEOBJECT_H

#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkObjectFactory.h>
#include <vtkRenderingCoreModule.h>
#include <vtkProperty.h>
#include <string.h>
#include <vtkActor.h>
class VTKRENDERINGCORE_EXPORT vtkIntraLatticeObject : public vtkActor
{
    public:
        vtkTypeMacro(vtkIntraLatticeObject, vtkActor);
        static vtkIntraLatticeObject* New();
        int assignID();
        std::string getObjectTypeName();

    protected:
        int ID;
        static int intralatticeActorCounter;
        vtkActor* Device;
        vtkIntraLatticeObject();
        ~vtkIntraLatticeObject();
};

#endif

vtkintralatticeObject.cc

#include "vtkIntraLatticeObject.h"
vtkStandardNewMacro(vtkIntraLatticeObject);
int vtkIntraLatticeObject::intralatticeActorCounter = 0;
vtkIntraLatticeObject::vtkIntraLatticeObject()
{
    int ID = -1;
    this -> Device = vtkActor::New();
}
vtkIntraLatticeObject::~vtkIntraLatticeObject()
{
    this -> Device -> Delete();
}
int vtkIntraLatticeObject::assignID()
{
    ID = intralatticeActorCounter;
    intralatticeActorCounter++;
    return ID;
}
std::string vtkIntraLatticeObject::getObjectTypeName()
{
    return "generic intralattice Object";
}

事实证明这是我的cmake文件,我没有做递归的地球。该文件位于下面的两层。因此,当编译器运行时,它无法找到.cc文件。
我唯一要补充的是VTKACTOR是一个抽象类。因此,实际上没有实现几个功能。因此,当我尝试显示vtkactor时,它是看不见的。通过将VTKopenglactor而不是VTKACTOR或实现丢失的函数来解决。