VC++2005使ってます。
構造体内に構造体を持たせて、その構造体が親の構造体を継承するコードを書いたんだけど
template<typename T> struct foo{ typedef T type; template<typename T_> struct bar : foo<T_>{}; }; int main(){ foo<int>; { foo<int>::type a; } // 変数を定義すれば良いのかよ!? foo<int>::type; // error C2059: 構文エラー : '空の宣言' foo<int>::bar<short>; { foo<int>::bar<short>::type a; } foo<int>::bar<short>::type; // error C2059: 構文エラー : '空の宣言' // error C2039: 'bar<long>' : 'foo<T>::bar<T_>' のメンバではありません。 foo<int>::bar<short>::bar<long>; return 0; }
何故か先の二例では空の宣言というコンパイルエラーで蹴られるし、最後の例に至っては継承を使って本来の目的である“入れ子構造体を必要であれば事実上無限に定義する”をしようとしているのに、これがまるでできないかの如くエラー。
どういうことなんだよおおおおお 後、前は増田にcppコード書くと何故か文字化けしたんだけど、今は直ってる!中の人ありがとう!GJ!
何がしたいのかわからん。
要するに、『何でエラーになるのか分からないから代わりの案とかあったら教えて』ってこと。