当我将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)