【发布时间】:2020-04-12 14:24:41
【问题描述】:
我正在尝试为具有自己的类“Node”的类“LinkedList”编写一个函数。 “LinkedList”类是一个模板类。我正在尝试编写一个函数“Foo_do_something”,它返回一个指向“节点”的指针。以下是代码:
template <typename T>
class LinkedList{
public:
class Node {
public:
T data;
Node *next;
Node *prev;
Node(): next(nullptr), prev(nullptr) {}
Node(const T & data): data(data), next(nullptr), prev(nullptr) {}
};
public:
Node* Foo_do_something();
};
template <typename T>
Node* LinkedList<T>::Foo_do_something(){
std::cout<<"Hello";
Node *ptr = new Node(100);
return ptr;
}
使用此代码我得到错误:
error: ‘Node’ does not name a type
我知道这是因为“节点”属于“LinkedList”类范围。所以我需要以某种方式添加这些信息。我尝试了以下代码,但也引发了错误。
LinkedList<T>::Node* LinkedList<T>::Foo_do_something(){
我可以理解,如果我在类中定义函数,那么问题就可以解决。但我试图将函数的实现分开。有什么办法吗?
【问题讨论】:
-
试试
typename LinkedList<T>::Node*。
标签: c++ class pointers templates