'неопределенная ссылка на vtable' для абстрактного класса (Qt) - PullRequest
0 голосов
/ 23 марта 2011

Я пишу библиотеку для разбора выражений в древовидную структуру, и у меня есть абстрактный тип 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

Когда я компилирую некоторые тесты (другой проект в QtCreator), которые работают на подклассах (QCConstantNode, QCVariableNode, QCBinaryOperatorNode и т. Д.), Компоновщик выдает мне ошибку «неопределенная ссылка на vtable» для QCExpressionNode , Что я делаю не так?

1 Ответ

0 голосов
/ 23 марта 2011

#include <QtPlugin>, тогда файл должен скомпилироваться просто отлично. Q_DECLARE_INTERFACE объявлено в QtPlugin.

Между прочим: довольно необычно составлять заголовочные файлы самостоятельно, и необычно включать защитные элементы вне заголовочных файлов.

...