2011-09-22 66 views
0

比方說,我在A.cpp文件下面的代碼:泛型編程類內部

template <typename T> 
class A{ 
    typedef T myType; 
    myType foo(); 
} 

如果我想要實現這個文件foo的功能,什麼是寫語法函數聲明? 我以爲它會是:

template <class T> 
myType A<T>::foo(){ 
. 
. 
. 
} 

顯然這是錯誤的。

回答

4

是,typedef的僅僅是在類中可用,返回類型不在類:

template <class T> 
typename A<T>::myType A<T>::foo() {} 
+0

非常感謝!有效! – mary

+1

不客氣。不要忘記接受答案(投票櫃檯下面的複選標記),以便讓其他人清楚。 – thiton

0
template <typename T> 
typename A<T> :: myType A<T> :: foo() 
{ 
} 
+1

這不會在gcc(以及所有其他符合標準的編譯器,我認爲)上編譯:您錯過了一個類型名稱。 – thiton