C++ - 使用 std::list,如何打印对象的私有成员的链接列表?

C++ - using std::list, how do you print a linked list of an object's private members?

本文关键字:对象 成员 列表 链接 打印 std 使用 list 何打印 C++      更新时间:2023-10-16

当我将Unit的成员公开时,它就起作用了。将变量更改为私有变量,如何访问/打印它们?

我的教授还没有教过迭代对象链表的方法(在这种情况下(以及如何访问该对象的私有成员。我确实实现getter和setter吗?我真的很失落,因为我对链表和使用列表库还很陌生。

#include <iostream>
#include <list>
#include <string>
using namespace std;
class Unit {
private:
string name;
int quantity;
public:
Unit(string n, int q){
name = n;
quantity = q;
}
};

void showTheContent(list<Unit> l)
{
list<Unit>::iterator it;
for(it=l.begin();it!=l.end();it++){
//
cout << it->name << endl;
cout <<  it->quantity << endl;
//        cout << &it->quantity << endl;  // shows address
}
}
int main()
{
// Sample Code to show List and its functions
Unit test("test", 99);
list<Unit> list1;
list1.push_back(test);
showTheContent(list1);
}

私有说明符的目标是防止从该类外部访问成员。Unit类的设计是荒谬的,因为你向所有人隐藏了成员,而且你也没有在这个类中使用它们。

您可以打开访问成员,可以添加getter/setter,实现Visitor模式——有很多选项。最简单的方法是打开访问权限(公开所有内容(:你应该根据教授给你的任务进行判断。

顺便说一句,在你的showTheContent函数中,你正在制作列表的完整副本,这可能不是你打算做的

void showTheContent(const list<Unit>& l)