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
感谢