[英]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
。 更改Node
到Node*
:
Node* Node::getNext()
{
return next;
}
该错误是说它不知道将Node
( Node
的实例)转换为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++ 中,区别很重要,您可以拥有一个对象变量、一个指针或一个引用。 但是指针是双向链表中next
和prev
的正确答案。
注意:更好的答案是Node* getNext() const;
但以后要担心!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.