是否可以在不使用typedef的情况下将函数指针作为模板参数传递?
template<class PF>
class STC {
PF old;
PF& ptr;
public:
STC(PF pf, PF& p)
: old(*p), ptr(p)
{
p = pf;
}
~STC() {
ptr = old;
}
};
void foo() {}
void foo2() {}
int main() {
void (*fp)() = foo;
typedef void (*vfpv)();
STC<vfpv> s(foo2, fp); // possible to write this line without using the typedef?
}
答案 0 :(得分:11)
是:
STC<
的 void (*)()
强> > s(foo2, fp); // like this
与获取typedef
声明并删除typedef
关键字和名称相同。
答案 1 :(得分:3)
完全有可能, 我还建议查找boost :: function&amp; boost :: bind作为替代解决方案。
答案 2 :(得分:0)
我不能像Maciek建议的那样使用boost(例如,你不能在项目中使用外部库),你可能会尝试使用仿函数。