繁体   English   中英

循环中迭代器后面的C ++访问对象

[英]C++ access object behind iterator in loop

我创建了一个类的对象列表。

该类有一个重载的 ostream << 运算符以结构化的方式输出客户数据。

我想要做的是遍历对象列表并在迭代中调用 cout 对象。

循环代码如下:

for (list<Kunde>::iterator it = this->kun_list.begin(); it != this->kun_list.end(); ++it) {
                cout << it << endl;
            }

Kunde是具有重载 << 运算符的类,而kun_listKunde类型的对象列表。

Kunde类中的友好重载:

friend ostream& operator<< (ostream& os, Kunde& kd) {
    os << "__Kundendaten__" << endl;
    os << "Name: " << kd.vorname << " " << kd.name << endl;
    os << "Geburtsjahr: "<< kd.geburtsjahr << endl;
    os << "Adresse: " << kd.strasse << " " << kd.hausnummer << endl << kd.plz << " " << kd.ort << endl;
    os << "Telefon: " << kd.telefonnummer << endl;
    string fschein = "Nein.";
    if (kd.klasse_a_vorhanden) {fschein = "Ja.";}
    os << "Führerschein Kl. A vorhanden: " << fschein << endl;
    return os;
};

上面的循环不起作用,因为我使用的是列表迭代器而不是Kunde类的对象。 我可以通过it→member访问Kunde的成员,但是如何使用该迭代器作为对整个对象的引用?

谢谢!

在容器上使用 const 引用循环:

for (const auto & kunde : kun_list) {
            cout << kunde << endl;
}

显然,您还必须修复<<

friend ostream& operator<< (ostream& os, const Kunde& kd) {...}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM