[英]C++ pointer to template function which class member
我在“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);
}
這些函數僅在實現中使用模板。 簽名不包含模板參數。
是否可以定義指向此類模板函數的指針?
我嘗試了以下定義,但它導致編譯錯誤。
typedef template<typename T> void (СSomeClass::*TFuncPtr)(int);
實例化后,成員函數模板只是一個普通的成員函數,因此您可以使用普通的成員函數指針(最好的typedef
如下):
typedef void (C::*mem_fun_ptr)(int);
mem_fun_ptr p = &C::Func1<Bar>;
// IMPORTANT -- ^^^^^
帶下划線的部分是重要的部分。 您不能創建指向函數模板的指針,但您可以創建指向實例化函數模板的指針。
你只想要一個指向函數的指針嗎? 這很簡單:
class C
{
public:
template<typename T> void Func1(int x);
};
typedef void (C::*TFuncPtr)(int);
int main()
{
TFuncPtr ptr = &C::Func1<int>;
}
如果你想要別的東西,你可以展示一個使用你想要的指針的例子嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.