tsv*_*svi 1 c++ return linked-list
class LinkedList_Movies
{
private:
class Node
{
public:
Movie* data;
Node* next;
};
Node* head;
public:
LinkedList_Movies() { head = NULL; }
~LinkedList_Movies();
Movie* searchById(const string& id);
void Add(const string& id, const string& name);
void Print();
Node* FindPlace(); // <<<<<<<< this func
};
Run Code Online (Sandbox Code Playgroud)
以上是我的链接列表.h.我想返回一个指向Node的指针.但在.cpp文件中,它不会让我做以下事情:
Node* LinkedList_Movies::FindPlace()
{
}
Run Code Online (Sandbox Code Playgroud)
它告诉我:Node is undefined.
我知道Node是私人的.那么,我该如何归还呢?
您需要符合条件Node,因为您目前正在定义类外的函数:
LinkedList_Movies::Node* LinkedList_Movies::FindPlace()
{
}
Run Code Online (Sandbox Code Playgroud)
请注意,此函数的调用者将无法轻松存储指针:
LinkedList_Movies movies;
LinkedList_Movies::Node* node = movies.FindPlace();
Run Code Online (Sandbox Code Playgroud)
因为这会给出一个编译器错误LinkedList_Movies::Node的private.但是,这可能正是您想要的.
它是可能为他们使用做到这一点auto,但:
LinkedList_Movies movies;
auto node = movies.FindPlace();
Run Code Online (Sandbox Code Playgroud)
或者,等效地,当传递给推导出的模板参数时:
template <typename T>
void foo(T t);
foo(movies.FindPlace());
Run Code Online (Sandbox Code Playgroud)