我试图通过这样的模板存储成员函数指针:(这是我的真实代码的简化版本)
template<class Arg1>
void connect(void (T::*f)(Arg1))
{
//Do some stuff
}
template<class Arg1>
void connect(void (T::*f)())
{
//Do some stuff
}
class GApp
{
public:
void foo() {}
void foo(double d) {}
};
Run Code Online (Sandbox Code Playgroud)
然后我想对GApp中的每个重载方法执行以下操作:
connect(&GApp::foo);
Run Code Online (Sandbox Code Playgroud)
打电话给这个foo()
是好的,但我怎么称它为foo(double d)
?以下为什么不工作?
connect((&GApp::foo)(double));
Run Code Online (Sandbox Code Playgroud)
它会给我
语法错误:'double'应以')'开头
我不明白这里必须使用的语法.这可能是一个愚蠢的问题,但任何人都可以帮助我吗?