返回类中的私有类

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是私人的.那么,我该如何归还呢?

Jos*_*eld 8

您需要符合条件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::Nodeprivate.但是,这可能正是您想要的.

可能为他们使用做到这一点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)