C2143具有嵌套的模板类

| 嗨,我在重新定义模板方面有些疑问。 请查看以下代码段。
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.
}
有人可以解释一下我吗 为什么\'obj1 \'的声明给出错误。 在声明\'obj2 \'时,typename如何解决此问题。编译器获取什么信息 为什么在main()中声明\'obj3 \'时不使用类型名。 注意:片段基于VC ++ 8.0 提前致谢     
已邀请:
CSmall<T_Type>::Const_Itr
是类型还是变量,编译器不知道。因此,您应该提供一些帮助。
CSmall<int>::Const_Itr
显然是一种类型。     
查看此常见问题解答:模板
typename
关键字用于什么?     

要回复问题请先登录注册