名字空间外定义的函数指针使用问题
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指针。
把它变成静态成员函数