1

次のようなファンクター基本クラスとファンクター派生クラスがあります。

class ReadSensor
{
public:
    ReadSensor();
    virtual ~ReadSensor(void){}
    virtual int operator()(void) = 0;
};

class ReadSensorDummy : public ReadSensor
{
public:
    ReadSensorDummy() : x(0) {}
    ReadSensorDummy(int x): x(x) {}
    ~ReadSensorDummy(void) {}
    int operator() (void) { return x;}
private:
    int x;
};

私はそれを次のように作成しています:

ReadSensor *rs =  new ReadSensorDummy(5);

コンパイルはできますが、次のリンク エラーが発生します。

Error   2   error LNK2019: unresolved external symbol "public: __cdecl ReadSensor::ReadSensor(void)" (??0ReadSensor@@QEAA@XZ) referenced in function "public: __cdecl ReadSensorDummy::ReadSensorDummy(int)" (??0ReadSensorDummy@@QEAA@H@Z) W:\SafetySystemTest.obj

なにが問題ですか?dynamic_cast は必要ないはずですが、試してみましたが、役に立ちませんでした。

4

1 に答える 1

5

のコンストラクターを定義する意図を宣言しましたReadSensorが、コンパイラーは、ソース ファイルのいずれにも定義されたコンストラクターを検出しませんでした。空のものを定義するか、宣言を削除してみてください。

于 2012-10-26T23:46:53.557 に答える