您好,我有一些疑问重新分级模板。 请查看以下片段。
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.
}
有人可以解释我
注意:在VC ++ 8.0上编译了代码片段
先谢谢
答案 0 :(得分:3)
答案 1 :(得分:1)
编译器不知道CSmall<T_Type>::Const_Itr
是类型还是变量。所以你应该提供一些帮助。虽然CSmall<int>::Const_Itr
显然是一种类型。