サブクラスのインスタンスを返すテンプレートクラスのメンバー関数を定義する正しい方法はありますか?
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