C++ 函数指针作为模板参数?
是否可以在不使用typedef的情况下将函数指针作为模板参数传递C++ 函数指针作为模板参数?,c++,C++,是否可以在不使用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 f
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?
}
模板
STC类{
pfold;
PF&ptr;
公众:
STC(PF、PF&p)
:旧(*p),ptr(p)
{
p=pf;
}
~STC(){
ptr=旧的;
}
};
void foo(){}
void foo2(){}
int main(){
void(*fp)(=foo;
typedef void(*vfpv)();
STC s(foo2,fp);//不使用typedef就可以写这一行吗?
}
是:
stcs(foo2,fp);//像这样
这与使用typedef
声明并删除typedef
关键字和名称相同。完全有可能,
我还建议您查找boost::function&boost::bind作为替代解决方案。我建议您不能像Maciek建议的那样使用boost(例如,您不能在项目中使用外部库),您可以尝试使用functor。这不是将函数指针作为模板参数传递,而是传递函数指针的类型。