【发布时间】:2015-02-19 14:49:33
【问题描述】:
我想使用和处理指向某个成员函数的指针,并且我还希望能够调用该(或其他)成员函数。 可以说,我有这样的标题:
class A{
public:
template<class T> void Add(bool (T::*func)(), T* member){
((member)->*(func))();
}
};
class B{
public:
bool Bfoo(){return 1;}
void Bfoo2(){
A a;
a.Add(Bfoo, this);
}
};
和这样的 cpp:
main(){
B f;
f.Bfoo2();
}
我有以下错误:
main.h(22) : 错误 C2784: 'void __thiscall A::Add(bool (__thiscall T::*)(void),T *)' : 无法推断“重载”的模板参数 函数类型'来自'重载的函数类型'
我需要从许多类中调用 A::Add(并发送有关类方法及其实例的信息),这就是我想使用模板的原因
使用 Microsoft Visual C++ 6.0。我究竟做错了什么?我不能使用 boost。
【问题讨论】:
-
这可能吗?将方法分配给普通函数指针?我会为此使用
std::function(C++11 标准)周围的东西。但你不能,因为你只能使用蹩脚的编译器。