模板中的C ++访问内部类

时间:2018-08-01 07:54:11

标签: c++

pls看一下这段代码:

template<typename T>
class myclass {
private:

  class node {
    friend class myclass;

    T t;

    node(T t_) : t(t_) {};
  };

  node nd;

  node getNode();

public:
  myclass(T t_) : nd(node(t_)) {};

  T get() {
    auto node = getNode();
    return node.t;
  }

};

template<typename T>
myclass<T>::node myclass<T>::getNode() {
  return nd;
}

我在模板之外定义方法getNode(),然后编译器报告此错误:

missing 'typename' prior to dependent type name 'myclass<T>::node' myclass<T>::node myclass<T>::getNode() {

我应该如何正确书写?

1 个答案:

答案 0 :(得分:4)

需要将typename关键字用于相关类型myclass<T>

template<typename T>
typename  myclass<T>::node myclass<T>::getNode() {
~~~~~~~~
  return nd;
}