C++ 为回调传递派生类指针
我正在尝试构建一个基于回调的串行RX驱动程序,尽管我使用的是一个已知良好并在其他应用程序中测试过的结构,但还是出现了编译错误。我肯定我在做一些愚蠢的事情,但就我的生命而言,我看不见它,所以多看几双眼睛会很感激的 该装置的功能应如下所示:C++ 为回调传递派生类指针,c++,visual-studio-2010,callback,C++,Visual Studio 2010,Callback,我正在尝试构建一个基于回调的串行RX驱动程序,尽管我使用的是一个已知良好并在其他应用程序中测试过的结构,但还是出现了编译错误。我肯定我在做一些愚蠢的事情,但就我的生命而言,我看不见它,所以多看几双眼睛会很感激的 该装置的功能应如下所示: namespace ocular { Class DeviceCallback { public: DeviceCallback(){} ~DeviceCallback(){} virtual void DeviceCallbackFun
namespace ocular
{
Class DeviceCallback
{
public:
DeviceCallback(){}
~DeviceCallback(){}
virtual void DeviceCallbackFunction(unsigned char Data){}
};
}
namespace ocular
{
Class DeviceCallback
{
public:
DeviceCallback(){}
~DeviceCallback(){}
virtual void DeviceCallbackFunction(unsigned char Data){}
};
}
设备类本身中的Start Asynch RX方法为:
void DeviceClass::StartAsynchRX( DeviceCallback* callback )
{
m_externalCallback = callback; // Save a local copy of the callback pointer
m_started = true;
StartAsynchRXThread(); // Spawn the RX Thread
return;
}
然后,我将自己的回调导出为:
Class DemoCallbackClass : public ocular::DeviceCallback
{
public:
void DeviceCallbackFunction(unsigned char myData){
std::cout << myData;
};
}
1> ..\Src\Support\AR2500调试\Main.cpp(99):错误C2664:“目测::DeviceClass::StartAsynchRX”:无法将参数1从“DemoCallbackClass(uu cdecl*)(void)”转换为“目测::DeviceCallback*”
我有理由肯定我在这里做了些傻事,但我一辈子都找不到。上周,我使用完全相同的方法编写了一个事件计时器类,它工作得很好。如果结构/方法在所有人看来都不错,我想这是一个微妙的打字错误,我只需要一次重写一个块,直到我摆脱这个该死的错误
你的绝望
DKW删除此行的括号:
DemoCallbackClass MyDemoCallback();
看起来是这样的:
DemoCallbackClass MyDemoCallback;
在这种情况下,错误输出根本没有帮助,但这应该可以解决它。可能会重复Oh。。。我的。。。上帝……:):)我觉得自己像个该死的布偶!非常感谢。我担心在我认为是标准的方法中发现了一些wierd扩展性缺陷。(这意味着使用我的相同方法实现的其他应用程序有一个潜在的bug,因此令人担忧)