我收到一个我不明白的错误。我敢肯定这很简单..但是我仍在学习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;
}
最佳答案
在我看来,bool RegisterHandler(int n, HandlerType & handler)
引用了HandlerType
类的对象,而您正在尝试传递一个函数。显然,这是行不通的。
所以我想您想做的是传递*this
而不是Rxmsg
。这将为RegisterHandler
提供mine
类的实例,现在可以在其上调用重写的函数Rxmsg
。
注意,如果这样做,函数Rxmsg
将在将变量*this
提供给RegisterHandler
的同一对象上被调用。
我希望这是您想要做的,希望我能为您提供帮助。