是否有一種爲模板類定義成員函數的正確方法,該模板類返回子類的實例?返回子類型的成員模板函數
下面是不VC++編譯2010爲例:
template<class T> class A {
public:
class B {
public:
T i;
};
A();
B* foo();
};
/////////////////////////////////////////////
template<class T> A<T>::A() {}
template<class T> A<T>::B* A<T>::foo() {
cout << "foo" << endl;
return new B();
}
我得到
Error 8 error C1903: unable to recover from previous error(s); stopping compilation
在該行的定義foo
的的開始。
我有正確的夾雜物和名稱空間聲明iostream
等
謝謝你們!
編輯:
按照要求,這裏是錯誤的完整列表,所有在同一行:
Warning 1 warning C4346: 'A<T>::B' : dependent name is not a type
Error 2 error C2143: syntax error : missing ';' before '*'
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error 4 error C1903: unable to recover from previous error(s); stopping compilation
Warning 5 warning C4346: 'A<T>::B' : dependent name is not a type
Error 6 error C2143: syntax error : missing ';' before '*'
Error 7 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error 8 error C1903: unable to recover from previous error(s); stopping compilation
給我們 「先前的錯誤(S)」 了。也許在A :: B缺失之前的typename? –
PiotrNycz
2012-07-10 13:50:34
謝謝@PiotrNycz,請參閱編輯。 – Mau 2012-07-10 14:03:21
可能的重複[哪裏和爲什麼我必須把「模板」和「typename」關鍵字?](http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to -put-the-template-and-typename-keywords) – 2012-07-10 15:05:27