抽象类(Qt)的'未定义的vtable引用'

时间:2011-03-23 00:37:30

标签: c++ qt vtable undefined-reference

我正在编写一个用于将表达式解析为树结构的库,我有一个抽象类型QCExpressionNode作为我的基类。它看起来像这样:

#ifndef QCEXPRESSIONNODE_H
#define QCEXPRESSIONNODE_H

#include <QString>

class QCExpressionNode
{
public:
    virtual ~QCExpressionNode() {}

    virtual float evaluate(float* x) = 0;
    virtual bool containsVariable() = 0;
    virtual QString infixNotation() = 0;
};

Q_DECLARE_INTERFACE(QCExpressionNode, "org.nathanmoos.qcalc.libexprtree-qt.QCExpressionNode/0.1")

#endif // QCEXPRESSIONNODE_H

当我编译一些适用于子类(QCConstantNodeQCVariableNodeQCBinaryOperatorNode等)的测试(QtCreator中的另一个项目)时,链接器给了我一个'未定义的引用为QCExpressionNode的vtable'错误。我做错了什么?

1 个答案:

答案 0 :(得分:0)

#include <QtPlugin>,然后文件应该编译得很好。 Q_DECLARE_INTERFACE中声明了QtPlugin

顺便说一句:自己编译头文件是很不寻常的,并且在头文件之外包含防护是不常见的。