方法定义需要使用类的私有声明

时间:2014-05-01 01:40:28

标签: c++ oop syntax

我在尝试创建一个方法时遇到问题,该方法的类型是其类的私有变量:

foo.h中

template <class T> class Foo {
  private:
    struct Node {
      T value;
      Node * following;
    }

    Node * bar( const T & elem );
}

Foo.cpp中

template <class T> Node * bar( const T & elem );

但是,foo.cpp中的节点并不存在,因为它是类Foo foo.h的私有变量。

我该如何解决?

1 个答案:

答案 0 :(得分:2)

在foo.cpp中,您错误地指定了函数的返回类型和名称。 Node来自班级Foo,因此您需要使用Foo<T>::对其进行限定。成员函数bar

也是如此
template <class T>
typename Foo<T>::Node* Foo<T>::bar( const T & elem );
//       ^^^^^^^^      ^^^^^^^^