Den*_*vov 4 c++ templates pointers function
我在"C"类中有以下功能
class C
{
template<typename T> void Func1(int x);
template<typename T> void Func2(int x);
};
template<typename T> void C::Func1(int x)
{
T a(x);
}
template<typename T> void C::Func2(int x)
{
T a(x);
}
Run Code Online (Sandbox Code Playgroud)
这些函数仅在实现中使用模板.签名不包含模板参数.
是否可以定义指向此类模板函数的指针?
我尝试了以下定义,但它导致编译错误.
typedef template<typename T> void (?SomeClass::*TFuncPtr)(int);
实例化后,成员函数模板只是一个普通的成员函数,因此您可以使用普通的成员函数指针(最好typedef如下所示):
typedef void (C::*mem_fun_ptr)(int);
mem_fun_ptr p = &C::Func1<Bar>;
// IMPORTANT -- ^^^^^
Run Code Online (Sandbox Code Playgroud)
带下划线的部分是重要的部分.您不能创建指向函数模板的指针,但您可以创建指向实例化函数模板的指针.
| 归档时间: |
|
| 查看次数: |
5750 次 |
| 最近记录: |