循环中迭代器后面的 C++ 访问对象
C++ access object behind iterator in loop
我创建了 class 的对象列表。
class 有一个重载的 ostream << 运算符以结构化的方式输出客户数据。
我想做的是遍历对象列表并在迭代中对对象调用 cout。
循环代码如下:
for (list<Kunde>::iterator it = this->kun_list.begin(); it != this->kun_list.end(); ++it) {
cout << it << endl;
}
Kunde
是带有重载 << 运算符的 class,kun_list
是 Kunde
.
类型的对象列表
Kunde
class:
中的友好超载
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;
};
上面的循环不起作用,因为我使用的是列表迭代器而不是 class Kunde
的对象。我可以通过 it→member
访问 Kunde
的成员,但是如何使用该迭代器作为对整个对象的引用?
谢谢!
在容器上使用 const 引用循环:
for (const auto & kunde : kun_list) {
cout << kunde << endl;
}
显然你还必须修复 <<
:
friend ostream& operator<< (ostream& os, const Kunde& kd) {...}
我创建了 class 的对象列表。
class 有一个重载的 ostream << 运算符以结构化的方式输出客户数据。
我想做的是遍历对象列表并在迭代中对对象调用 cout。
循环代码如下:
for (list<Kunde>::iterator it = this->kun_list.begin(); it != this->kun_list.end(); ++it) {
cout << it << endl;
}
Kunde
是带有重载 << 运算符的 class,kun_list
是 Kunde
.
Kunde
class:
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;
};
上面的循环不起作用,因为我使用的是列表迭代器而不是 class Kunde
的对象。我可以通过 it→member
访问 Kunde
的成员,但是如何使用该迭代器作为对整个对象的引用?
谢谢!
在容器上使用 const 引用循环:
for (const auto & kunde : kun_list) {
cout << kunde << endl;
}
显然你还必须修复 <<
:
friend ostream& operator<< (ostream& os, const Kunde& kd) {...}