functor作为C++中的基类

Jim*_*shr 1 c++ functor

我有一个仿函数基类和一个仿函数派生类,如下所示:

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;
};
Run Code Online (Sandbox Code Playgroud)

我正在创建它:

ReadSensor *rs =  new ReadSensorDummy(5);
Run Code Online (Sandbox Code Playgroud)

它编译,但我收到以下链接错误:

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
Run Code Online (Sandbox Code Playgroud)

怎么了?不应该需要一个dynamic_cast的,但我没有尝试,它并没有帮助.

jxh*_*jxh 5

您已声明要为其定义构造函数ReadSensor,但编译器未找到任何源文件中定义的构造函数.您可以尝试定义一个空的,或删除声明.

  • @Jim:你是积极的吗?[这个](http://ideone.com/u8fDTv)工作正常,[这个](http://ideone.com/zhfI1n),所以必须有一些你没有向我们展示的东西. (2认同)