【发布时间】:2026-02-23 17:55:02
【问题描述】:
这适用于非成员函数。如何更改它以能够使用成员函数执行相同的操作。我尝试过“函数指针”技术,但在性能方面效率不高。
template <typename Func>
int f(int a, Func somefunc) {
somefunc(a);
return 0;
}
...
f(5,myfoo);
我希望能够做到这一点:
int myClass::mybar() {
f(5,myfoo); //where myfoo is actually "myClass::myfoo" here.
//I want myClass to be the template class.
}
如何定义模板类并使其成员函数模板也一样,以便f 可以与任何类和任何成员函数一起使用?
谢谢!
【问题讨论】:
-
你说的这种“函数指针”技术是什么?
-
您是否尝试使用该类的另一个模板参数重载您的函数?那么函数的类型将是 Class::Func
-
@BrianBi 我的意思是 C++ 中的函数指针!比如传递函数的地址
-
@Geoffroy:如果你的意思是模板
,我已经试过了。然后我使用了 Class::Func 而不是 Func。没用! -
在 C++ 中使用函数指针很少是合理的,它们通常用作 C++ 和 C 库之间的桥梁,有时也用作“优化”。 C++ 拥有比函数指针更复杂的工具。
标签: c++ templates functor member-functions typename