繁体   English   中英

如何在 C++ 中为双向链表编写 setter 和 getter

[英]How to write setters and getters for a doubly linked list in c++

当我尝试在 Node.cpp 中编写 getNext() 方法时,它给出了以下错误。 请检查 Node.cpp getNext() 方法。我正在尝试为双向链表编写 getter 和 setter,这就是我所拥有的。

class Node

{

    private:

        string phonenumber;
        string name;
        string type;
        Node* next;
        Node* prev;

    public:
        Node(string name, string phonenumber, string type);

        void setNext(Node ptr);
        Node getNext();

        string getName();
        void setName(string name);


        string getPhone();
        void setPhone(string phonenum);


        string getType();
        void setType(string type);

};
#endif

节点.cpp

    #include "Node.h"
    
    Node::Node(string name, string phonenumber, string type)
    {
       //constructor
    }
    
    Node::Node(string name, string phonenumber, string type)
    {
    
    }
    void Node::setNext(Node ptr)
    {
        
    
    }

当我尝试在 Node.cpp 中编写 getNext() 方法时,它给出了以下错误。 请检查 Node.cpp getNext() 方法。我正在尝试为双向链表编写 getter 和 setter,这就是我所拥有的。

    Node Node::getNext()
    {
    
       return next; /**/ this line gives me an error (it says no suitable constructor exists for Node* to Node)
    }

您的next一个变量是Node* ,而在函数中,您返回的是Node 更改NodeNode*

Node* Node::getNext()
{
   return next;
}

该错误是说它不知道将NodeNode的实例)转换为Node* (指向Node实例(或nullptr )的指针。

这些片段将使您摆脱困境:

//In the class definition:

   Node* getNext();

//... 
// The function definition:

Node* Node::getNext(){
    return this->next;  //or just return next; if you prefer.
}

在 C++ 中,对象和指向该对象的指针之间存在天壤之别。

一旦你了解了这个概念,你就在掌握 C++ 方面取得了巨大的飞跃。

我不知道你的背景,但Java的埋葬这一点,因为所有的对象变量实际上是指针(在C ++术语)。 但是在 C++ 中,区别很重要,您可以拥有一个对象变量、一个指针或一个引用。 但是指针是双向链表中nextprev的正确答案。

注意:更好的答案是Node* getNext() const; 但以后要担心!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM