比方說,我在A.cpp文件下面的代碼:泛型編程類內部
template <typename T>
class A{
typedef T myType;
myType foo();
}
如果我想要實現這個文件foo的功能,什麼是寫語法函數聲明? 我以爲它會是:
template <class T>
myType A<T>::foo(){
.
.
.
}
顯然這是錯誤的。
比方說,我在A.cpp文件下面的代碼:泛型編程類內部
template <typename T>
class A{
typedef T myType;
myType foo();
}
如果我想要實現這個文件foo的功能,什麼是寫語法函數聲明? 我以爲它會是:
template <class T>
myType A<T>::foo(){
.
.
.
}
顯然這是錯誤的。
是,typedef的僅僅是在類中可用,返回類型不在類:
template <class T>
typename A<T>::myType A<T>::foo() {}
template <typename T>
typename A<T> :: myType A<T> :: foo()
{
}
這不會在gcc(以及所有其他符合標準的編譯器,我認爲)上編譯:您錯過了一個類型名稱。 – thiton
非常感謝!有效! – mary
不客氣。不要忘記接受答案(投票櫃檯下面的複選標記),以便讓其他人清楚。 – thiton