创建 C++ class 的新实例,结果重复
Creating an new instance of a C++ class, results a duplicate
我是 C++ 新手。我正在尝试实现一个 LinkedList,为此我创建了两个 类 Node
和 LinkedList
。
我创建了一些测试函数。一个测试 Node
创建,另一个测试 LinkedList
的 isEmpty
函数。但是,当我尝试测试它们时。在 'testNode()ends up being in the same Node I create inside
LinkedListas
head`.
中创建了什么
这可能是一个微不足道的问题,但是作为 C++ 的新手,这个概念对我来说仍然不是很清楚。我想知道为什么它指的是之前创建的同一个实例。
#include <iostream>
#include <assert.h>
using namespace std;
class Node
{
private:
int data;
int next;
public:
int getData(){return data;}
void setData(int new_data) {data = new_data;}
int getNext(){return next;}
void setNext(int new_next) {next = new_next;}
};
class LinkedList
{
Node head;
Node head2;
public:
bool isEmpty()
{
if (head.getData() == 0) {return true;}
return false;
}
};
void testNode()
{
Node aNode;
aNode.setData(15);
aNode.setNext(23);
assert (aNode.getData() == 15);
assert (aNode.getNext() == 23);
}
void testEmptyLinkedList()
{
LinkedList ll;
assert (ll.isEmpty() == true);
}
初始化您的数据。
int data = 0;
int next = 0;
#include <iostream>
#include <cassert>
using namespace std;
class Node {
private:
int data = 0;
int next = 0;
public:
int getData() { return data; }
void setData(int new_data) { data = new_data; }
int getNext() { return next; }
void setNext(int new_next) { next = new_next; }
};
class LinkedList {
Node head;
Node head2;
public:
bool isEmpty() {
if (head.getData() == 0) {
return true;
}
return false;
}
};
void testNode() {
Node aNode;
aNode.setData(15);
aNode.setNext(23);
assert(aNode.getData() == 15);
assert(aNode.getNext() == 23);
}
void testEmptyLinkedList() {
LinkedList ll;
assert(ll.isEmpty() == true);
}
int main() {
testEmptyLinkedList();
}
如果您打算实现 LinkList,则列表的每个节点都应包含下一个节点的地址。
所以"next"应该声明为指向节点的指针。列表的第一个节点相同。
class Node {
private:
int data;
Node *next;
....
};
class LinkedList {
private:
Node *head;
...
};
我是 C++ 新手。我正在尝试实现一个 LinkedList,为此我创建了两个 类 Node
和 LinkedList
。
我创建了一些测试函数。一个测试 Node
创建,另一个测试 LinkedList
的 isEmpty
函数。但是,当我尝试测试它们时。在 'testNode()ends up being in the same Node I create inside
LinkedListas
head`.
这可能是一个微不足道的问题,但是作为 C++ 的新手,这个概念对我来说仍然不是很清楚。我想知道为什么它指的是之前创建的同一个实例。
#include <iostream>
#include <assert.h>
using namespace std;
class Node
{
private:
int data;
int next;
public:
int getData(){return data;}
void setData(int new_data) {data = new_data;}
int getNext(){return next;}
void setNext(int new_next) {next = new_next;}
};
class LinkedList
{
Node head;
Node head2;
public:
bool isEmpty()
{
if (head.getData() == 0) {return true;}
return false;
}
};
void testNode()
{
Node aNode;
aNode.setData(15);
aNode.setNext(23);
assert (aNode.getData() == 15);
assert (aNode.getNext() == 23);
}
void testEmptyLinkedList()
{
LinkedList ll;
assert (ll.isEmpty() == true);
}
初始化您的数据。
int data = 0;
int next = 0;
#include <iostream>
#include <cassert>
using namespace std;
class Node {
private:
int data = 0;
int next = 0;
public:
int getData() { return data; }
void setData(int new_data) { data = new_data; }
int getNext() { return next; }
void setNext(int new_next) { next = new_next; }
};
class LinkedList {
Node head;
Node head2;
public:
bool isEmpty() {
if (head.getData() == 0) {
return true;
}
return false;
}
};
void testNode() {
Node aNode;
aNode.setData(15);
aNode.setNext(23);
assert(aNode.getData() == 15);
assert(aNode.getNext() == 23);
}
void testEmptyLinkedList() {
LinkedList ll;
assert(ll.isEmpty() == true);
}
int main() {
testEmptyLinkedList();
}
如果您打算实现 LinkList,则列表的每个节点都应包含下一个节点的地址。
所以"next"应该声明为指向节点的指针。列表的第一个节点相同。
class Node {
private:
int data;
Node *next;
....
};
class LinkedList {
private:
Node *head;
...
};