我在尝试创建一个方法时遇到问题,该方法的类型是其类的私有变量:
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
的私有变量。
我该如何解决?
答案 0 :(得分:2)
在foo.cpp中,您错误地指定了函数的返回类型和名称。 Node
来自班级Foo
,因此您需要使用Foo<T>::
对其进行限定。成员函数bar
:
template <class T>
typename Foo<T>::Node* Foo<T>::bar( const T & elem );
// ^^^^^^^^ ^^^^^^^^