C ++模板 - 类内结构

时间:2015-12-09 19:47:37

标签: c++ templates

对于以下代码,我在实现行遇到了一个编译错误: " B没有定义类型"。 我知道把类函数定义放在类声明中的解决方案。但是,是否可以从模板类声明中获取函数定义?感谢

template<typename T>
class A {
    public:
        // ctor, dtor and interface funcs etc

   private:
     struct B {
          T value;
          B *next;
     }

     B *locate(const T& val) const;

     // blah blah
};

template<typename T>
B *A<T>::locate(const T& val) const
{
    //logic
}

1 个答案:

答案 0 :(得分:4)

由于在B内定义了A,您应该使用A<T>::来限定它:

template<typename T>
typename A<T>::B *A<T>::locate(const T& val) const
{
    //logic
}

另请注意typename这是必需的,因为B是从属名称。