【发布时间】:2011-07-26 20:49:40
【问题描述】:
typedef boost::function<void (int,bool)> MyCallback;
void RegisterCallback(MyCallback callback);
class A {
public:
void GoodCallback(int intArg,bool boolArg) {
printf("calling GoodCallback (%d,%s)\n",intArg,boolArg?"true":"false");
}
void BadCallback(int intArg) {
printf("calling BadCallback (%d)\n",intArg);
}
};
int TestFunction() {
A * myA=new A();
RegisterCallback(boost::bind(&A::GoodCallback,myA,_1,_2));
RegisterCallback(boost::bind(&A::BadCallback,myA,_1));
return 0;
}
有什么方法可以使第二次调用 RegisterCallback 不编译?
对于上下文:
我最近更改了回调签名并添加了 bool 参数。我以为我已经更新了所有使用它的东西,但我错了。除了在每次更改签名时重命名 RegisterCallback 之外,我还希望有一种方法可以让编译器强制使用所有参数。
【问题讨论】:
标签: c++ boost boost-function