2011-12-30 78 views
-2

我寫一個模板函數,可以接受參數說X或Y或它們被定義爲Z.如下:問題與函數模板

typedef MyClassA<string> X; 
typedef MyClassA<float> Y; 

但CLASSA本身是一個模板,其定義如下:

template< class T> 
class MyClass 
{ 

} 

在這種情況下,我的函數簽名應該是什麼?
我嘗試了一個簡單的func(T a),但它失敗了。

+2

請發佈您嘗試的實際代碼和編譯器錯誤消息。 – Mat 2011-12-30 12:27:06

+1

你有沒有試過func(MyClass a)??? – Vapire 2011-12-30 12:28:17

回答

1

不知道這是你所追求的:

template< class T> 
class MyClass 
{ 

}; 
typedef MyClass<int> X; 
typedef MyClass<float> Y; 

template<class T> 
void func(MyClass<T> a) { 
} 
1

這是模板類常用的語法:

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); 
0

你的意思是接受任何專業化的類模板作爲參數嗎?這也必須是一個模板:

template <typename T> void func(MyClassA<T>);