我收到一个我不明白的错误。我敢肯定这很简单..但是我仍在学习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的同一对象上被调用。

我希望这是您想要做的,希望我能为您提供帮助。

09-10 04:03