我收到一个我不明白的错误。我确信这很简单..但我还在学习C ++。 我不确定它与我的参数是否与纯虚函数声明完全相同或者是否是其他东西。
这是我的简化代码:
in header_A.h
class HandlerType
{
public:
virtual void Rxmsg(same parameters) = 0; //pure virtual
};
--------------------------------------------------
in header_B.h
class mine : public HandlerType
{
public:
virtual void myinit();
void Rxmsg(same parameters); // here I have the same parameter list
//except I have to fully qualify the types since I'm not in the same namespace
};
--------------------------------------------------
in header_C.h
class localnode
{
public:
virtual bool RegisterHandler(int n, HandlerType & handler);
};
--------------------------------------------------
in B.cpp
using mine;
void mine::myinit()
{
RegisterHandler(123, Rxmsg); //this is where I am getting the error
}
void Rxmsg(same parameters)
{
do something;
}
答案 0 :(得分:1)
在我看来,bool RegisterHandler(int n, HandlerType & handler)
会引用类HandlerType
的对象并且您尝试传递函数。显然这不起作用。
所以我认为你想做的是传递*this
而不是Rxmsg
。这将为RegisterHandler
提供类mine
的实例,现在可以在其上调用重写的函数Rxmsg
。
请注意,如果以这种方式完成,函数Rxmsg
将在变量*this
具有的完全相同的对象上调用,此时您将其提供给RegisterHandler
。< / p>
我希望这是你打算做的,我希望我可以帮助你。
答案 1 :(得分:1)
将RegisterHandler(123, Rxmsg);
更改为RegisterHandler(123, *this);
解决了问题。谢谢!