如何访问私有的指向的类

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的值!!]

以上是关于如何访问私有的指向的类的主要内容,如果未能解决你的问题,请参考以下文章

如何管理在每个 git 版本中添加私有代码片段?

java里一个私有的属性如何在其他类里面进行访问?

从 C++ 中的类访问私有变量

如何访问其子类中的类的私有变量?

如何将 View 类中的代码片段移动到 OnAppearing() 方法?

单例模式