0

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の別のプロジェクト)をコンパイルするQCConstantNodeQCVariableNodeQCBinaryOperatorNodeリンカーはQCExpressionNodeの「vtableへの未定義の参照」エラーを表示します。私は何が間違っているのですか?

4

1 に答える 1

0

#include <QtPlugin>、その後、ファイルは正常にコンパイルされます。 Q_DECLARE_INTERFACEで宣言されていQtPluginます。

ちなみに、ヘッダーファイルを単独でコンパイルすることは非常に珍しく、ヘッダーファイルの外部にガードを含めることは珍しいことです。

于 2011-03-23T00:47:24.100 に答える