C++ 从类外访问链表私有变量

C++ 从类外访问链表私有变量,c++,class,linked-list,private-members,C++,Class,Linked List,Private Members,我目前正在开发一个程序,可以访问另一个人编写的链接列表。我假设此人将head和tail变量声明为private,但我希望遍历它们的链接列表 下面是一个可能的链表实现 /* singly linked list node */ struct SLLNode { int data; SLLNode *next; }; /* singly linked list implementation */ class SLinkedList { public: SLinkedList

我目前正在开发一个程序,可以访问另一个人编写的链接列表。我假设此人将head和tail变量声明为private,但我希望遍历它们的链接列表

下面是一个可能的链表实现

/* singly linked list node */
struct SLLNode {
    int data;
    SLLNode *next;
};

/* singly linked list implementation */
class SLinkedList {
public:
    SLinkedList();
    ~SLinkedList();

    void addToTail(int newData);
    void addToHead(int newData);

    friend std::ostream& operator<<(std::ostream&, const SLinkedList&);

private:
    SLLNode *head;
    SLLNode *tail;
};
/*单链接列表节点*/
结构SLLNode{
int数据;
SLLNode*下一步;
};
/*单链表的实现*/
类链接列表{
公众:
SLinkedList();
~SLinkedList();
void addToTail(int newData);
void addToHead(int newData);

friend std::ostream&operator您不能,因为它是私有的

其他人需要向您提供访问权限,例如使用公共成员功能


例如,您可以看一看问题。

设计此列表的人必须提供一个接口,您可以访问列表中存储的数据

现在,您只能将数据添加到列表并全部输出

通常,这样的容器提供迭代器,允许遍历列表。
这个人应该编写这样一个接口。否则列表就没有任何用处。

那么我想我的另一个问题是,我可以编写哪个公共成员,它将返回一个指针,其中的数据不能更改。但是这个类不是你的,你可以这样做吗?这取决于你想要什么。你不能返回一个const引用作为示例大量的指针。但这可能是另一个问题。你是对的。我现在只是用它来测试,但我现在明白了很多,谢谢。欢迎@Justin。记住private是为了确保类外的任何人都不能直接访问private字段。我还包括了一个链接。顺便提一下,这个问题很好,+1。@JustinI不认为您应该在SLinkedList之外公开此实现细节,而是提供一种方法来迭代列表,以便其他类可以访问元素,但不能访问SLinkedList的内部实现。