gpt4 book ai didi

c++ - 如何访问私有(private)指向类

转载 作者:行者123 更新时间:2023-11-28 04:07:01 24 4
gpt4 key购买 nike

我试图学习这个 linkedList Stack ADT 东西,我初始化了 null head 并尝试向它添加一个节点。但由于“Node* head”是私有(private)的,我无法访问它。我知道我必须更改其类型说明符,但我有一项作业需要保密。此外,当我公开时,我无法进行任何更改,并且出现异常抛出错误,提示为空。这是代码(代码是从讲座幻灯片中复制的,我只添加了主要部分):

#include <iostream>

using namespace std;

class Node {
public:
Node(int);
int data;
Node* next;
};

Node::Node(int x){
data = x;
}

class LinkedList {
public:
LinkedList();
void insert(Node*, int);
void printList();
~LinkedList();
private:
Node* head;
};

LinkedList::LinkedList() {
head = 0;
}

void LinkedList::printList() {
Node* n = head;
while (n != 0) {
cout << n->data;
n = n->next;
}
}

void LinkedList::insert(Node* current, int X) {
Node* xNode = new Node(X);
xNode->next = current->next;
current->next = xNode;
}

LinkedList::~LinkedList() {
Node* dNode = head;
while (dNode != 0) {
head = head->next;
delete dNode;
dNode = head;
}
}

int main() {
LinkedList *list = new LinkedList();
list->insert(//whatShouldIdoHere, 5);
list->printList();

return 0;
}

最佳答案

LinkedList 之外的任何东西都不应该知道Node 是什么。如果你想在列表中插入一些东西,你真的应该只给出你要插入的值。 LinkedList 类本身应该负责确定实际需要放置东西的位置。

因此,您应该拥有一些只接受一个值的面向公众的函数,例如:

void LinkedList::push_front(int X) {
insert(head, X); //Insert into the front of the list
}

(另外不要忘记 insert 中的边缘情况,您需要更新 head 的值!!)

关于c++ - 如何访问私有(private)指向类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58549594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com