如何访问私有的指向的类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何访问私有的指向的类相关的知识,希望对你有一定的参考价值。
我试图学习这个linkedList Stack ADT的东西,我初始化了空头,并尝试向其添加一个节点。但是由于“ Node * head”是私有的,因此我无法访问它。我知道我必须更改其类型说明符,但我有一项作业需要保密。另外,当我公开露面时,我无法进行任何更改,并且出现异常提示异常,即为null。这是代码(代码是从演讲幻灯片中复制的,我只添加了main):
#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
的值!!]
以上是关于如何访问私有的指向的类的主要内容,如果未能解决你的问题,请参考以下文章