0
嗨我有一些懷疑regrading模板。 請查看follwoing片段。以下C2143與嵌套模板類
- 爲什麼 'OBJ1' 的聲明給錯誤
template<class T_Type1> class CSmall { public: class Const_Itr { T_Type1 Outer_A; }; private: T_Type1 Inner_A; }; template<class T_Type> class CBig { public: CSmall<T_Type>::Const_Itr* obj1;//ERROR C2143: syntax error : missing ';' before '*' typename CSmall<T_Type>::Const_Itr* obj2;// NO error after using 'typename' keyword }; // CIPPortExpectationHandler void main() { CSmall<int>::Const_Itr* obj3;// NO error even if 'typename' keyword in NOT used. }
有人可以給我解釋一下。
- typename在聲明'obj2'時如何解決這個問題。編譯器獲得什麼信息
- 爲什麼在main()中聲明'obj3'的工作沒有typename。
注:摘錄事先對符合VC++ 8.0
感謝