嵌套模板和静态成员初始化

时间:2011-06-27 09:18:37

标签: c++ templates

我想创建一个依赖于外部类的内部模板类。 我在定义静态成员时遇到了麻烦:

template<typename T1, typename T2>
struct B { 
  template<typename T3> 
  struct C { 
      static T3 m_c;
  }; 
  static T1 * pT1;
};
template<typename T1, typename T2>
template<typename T3>
T3 B<T1,T2>::C<T3>::m_c;

template<typename T1, typename T2> 
T1 * B<T1,T2>::pT1 = &B<T1,T2>::C<T2>::m_c;

我得到了: a.cc:35:错误:在'&gt;'之前预期的primary-expression代币 a.cc:35:错误:':: m_c'尚未声明

我该如何定义它? 感谢。

1 个答案:

答案 0 :(得分:0)

我猜你的编译器在解析<符号作为模板声明的开头括号时失败了。试着明确告诉它它是一个模板,而不是一个小于运算符:

template<typename T3>
T3 B<T1,T2>::template C<T3>::m_c;