我在玩函子。我正在使用下面的标准示例:
class C {
public:
template <typename Func>
void foo(Func fun)
{
fun();
}
};
struct S {
void operator()() { printf ("in S\n"); }
};
....
C myClass;
myClass.foo (S());
这很好用,我不需要在调用 foo() 时显式提供 S 模板类型,它只是计算出来。但是假设我想将仿函数存储为成员变量并稍后调用它:
class C {
public:
template <typename Func>
void foo(Func fun) {
_myFunc = fun;
}
void someOtherThing() {
_myFunc();
}
private:
WHAT_IS_THIS_TYPE _myFunc;
};
我现在需要将整个班级设为模板吗?如果是这样,编译器是否可以像使用单个函子一样推断模板类型,还是我必须显式提供它?谢谢。