读书人

名字空间外定义的函数指针使用有关问题

发布时间: 2012-03-20 14:01:10 作者: rapoo

名字空间外定义的函数指针使用问题

typedef void Sig(int);
Sig UseSig(Sig);


namespace ns
{
class ClassEx
{
public:
void Example();
private:
void SigEx();
};

void ClassEx::SigEx(int sig)
{
// ...
}

void ClassEx::Example()
{
UseSig(Sig_Ex); // 出错地方
}
}~namespace ns

使用g++编译报错:
error: argument of type `void (ns::ClassEx::)(int) ' does not match `void (*)(int) '

我尝试使用
UseSig((::Sig*)Sig_Ex);
还是报错。

请问怎么解决这个问题。
我以前曾经见过解决方法,现在忘了。

[解决办法]
SigEx是类的成员函数,带有this指针。
把它变成静态成员函数

读书人网 >C++

热点推荐