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

Method definition need to use private declaration of a class

本文关键字:声明 定义 方法      更新时间:2023-10-16

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

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 );

但是Node在foo.cpp中不存在,因为它是Foofoo.h类的私有变量。

我该怎么修?

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

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