没有用于调用未解析的重载函数类型的匹配函数

时间:2015-02-24 05:30:30

标签: c++ c++11

我收到一个我不明白的错误。我确信这很简单..但我还在学习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;
}

2 个答案:

答案 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);解决了问题。谢谢!