我寫一個模板函數,可以接受參數說X或Y或它們被定義爲Z.如下:問題與函數模板
typedef MyClassA<string> X;
typedef MyClassA<float> Y;
但CLASSA本身是一個模板,其定義如下:
template< class T>
class MyClass
{
}
在這種情況下,我的函數簽名應該是什麼?
我嘗試了一個簡單的func(T a)
,但它失敗了。
我寫一個模板函數,可以接受參數說X或Y或它們被定義爲Z.如下:問題與函數模板
typedef MyClassA<string> X;
typedef MyClassA<float> Y;
但CLASSA本身是一個模板,其定義如下:
template< class T>
class MyClass
{
}
在這種情況下,我的函數簽名應該是什麼?
我嘗試了一個簡單的func(T a)
,但它失敗了。
不知道這是你所追求的:
template< class T>
class MyClass
{
};
typedef MyClass<int> X;
typedef MyClass<float> Y;
template<class T>
void func(MyClass<T> a) {
}
這是模板類常用的語法:
template <typename T>
class My
{
public:
void func(T c);
};
template <typename T>
void My<T>::func(T a)
{
std::cout << "test\n";
}
int main()
{
My<int> m;
m.func(42);
}
,你應該嘗試一下本作模板函數:
template <class T>
T func(T q) {
return (++q);
}
int res = func<int>(42);
你的意思是接受任何專業化的類模板作爲參數嗎?這也必須是一個模板:
template <typename T> void func(MyClassA<T>);
請發佈您嘗試的實際代碼和編譯器錯誤消息。 – Mat 2011-12-30 12:27:06
你有沒有試過func(MyClass a)??? –
Vapire
2011-12-30 12:28:17