我的以下示例使用可变参数模板注册一个类的内部的功能。注册单个函数可以工作,但类成员函数又如何?我试过std :: bind,但是这期望占位符不是一个选项,因为我不知道参数的数量。有没有一种简单的方法在C++ 11中执行此操作,还是我不得不为每个参数实现注册函数?C++成员函数结合具有可变参数模板
template<typename TReturn, typename... TArgs>
class Func {
std::function<TReturn (TArgs...)> fn;
template<typename TFunction, typename TObject>
bool register(TFunction f, TObject obj){
}
bool register(std::function<TReturn (TArgs...)> f){
fn = f;
return true;
}
}
你不会有太多的乐趣调用一个函数'register'因为这标识符是关键字。更重要的是,你似乎有两个名字和一个没有实现的函数:你期望函数做什么? –
我忘了更改名称。你说得对,这是行不通的。让我们忘记第二个功能。我想要的是在fn中存储一个类成员函数。 – Gustavo
你不需要为成员函数分开过载,用户可以使用过载服用'的std :: function',并通过'的std ::绑定(&X ::楼OBJ,ARGS ...)'或一个合适的函子。 – 0x499602D2