728x90
QObject 클래스와 vtkCommand 를 상속한 observer 클래스를 빌드할 때 아래와 같은 에러가 발생하였습니다.
class VTKUTILS_EXPORT MyWidgetObserver : public QObject, public vtkCommand
{
Q_OBJECT
public:
explicit BoxWidgetObserver(QObject* parent = nullptr);
signals:
void planesChanged(vtkPlanes* planes);
protected:
void Execute(vtkObject* caller, unsigned long eventId, void* callData);
vtkSmartPointer<vtkPlanes> m_planes;
};
전체적으로 문제가 될것이 없어보이나, vtkObject 를 moc파일을 생성하면서 기본 생성자에 대한 정보를 metatype으로 만들기 때문에 발생하는 에러입니다.
혹시나 Q_Macro 에서 클래스임을 명시하도록 하는게 있는지 찾아봤으나 없었습니다.
간단한 해결 방법은 vtkObject가 클래스임을 알려주면 되는데 forward declaration 을 하면 에러가 없어집니다.
728x90
728x90