创建 C++ class 的新实例,结果重复

Creating an new instance of a C++ class, results a duplicate

我是 C++ 新手。我正在尝试实现一个 LinkedList,为此我创建了两个 类 NodeLinkedList

我创建了一些测试函数。一个测试 Node 创建,另一个测试 LinkedListisEmpty 函数。但是,当我尝试测试它们时。在 'testNode()ends up being in the same Node I create insideLinkedListashead`.

中创建了什么

这可能是一个微不足道的问题,但是作为 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;

Live On Coliru

#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;
     ...
};