我知道有一个主题循环将运行最多一次(循环增量从未执行),但它并没有回答我的问题。
我有以下代码:
class Station{
public:
Station();
void addWartezimmer(Wartezimmer wartezimmer);
void addBehandlungszimmer(Behandlungszimmer behandlungszimmer);
int getWartezimmer();
private:
list<Wartezimmer> WartezimmerListe;
list<Behandlungszimmer> BehandlungszimmerListe;
};
Station::Station(){
}
void Station::addWartezimmer(Wartezimmer wartezimmer){
this->WartezimmerListe.push_back(wartezimmer);
}
void Station::addBehandlungszimmer(Behandlungszimmer behandlungszimmer){
this->BehandlungszimmerListe.push_back(behandlungszimmer);
}
int Station::getWartezimmer(){
list<Wartezimmer>::iterator i;
for (i = WartezimmerListe.begin(); i != WartezimmerListe.end(); i++){
return i->getAnzahlPlaetze();
}
return 0;
};
int main(int argc, const char * argv[]) {
Zimmer zimmer("05.23");
Wartezimmer WarteZimmer1(12, "01.12");
Wartezimmer WarteZimmer2(14, "03.12");
Behandlungszimmer Behandlungszimmer1("Intensiv", "01.01");
Station West;
West.addWartezimmer(WarteZimmer1);
West.addWartezimmer(WarteZimmer2);
West.addBehandlungszimmer(Behandlungszimmer1);
cout << West.getWartezimmer();
}
如果我执行这个命令,它将被打印为"12"我希望是"1214",因为有两个对象有数字。
如果我将函数更改为void并在函数中打印它,它是&;1214&;
void Station::getWartezimmer(){
list<Wartezimmer>::iterator i;
for (i = WartezimmerListe.begin(); i != WartezimmerListe.end(); i++){
cout << i->getAnzahlPlaetze();
}
};
所以我的具体问题:我怎么能返回一个函数的值,如果它是一个列表中的多个值?我不想只要"12",我想要"1214"。因为它们是两个对象。
如果你想获得完整的数据,你可以改变int gettwartezimmer ();
list<Wartezimmer> Station::getWartezimmer()
{
return WartezimmerListe;
}
但是我猜你想要的是anzahlpletze不管它是什么所以int gettwartezimmer你可以直接输入
vector<AnzahlPlaetze> Station::getWartezimmer()
{
vector<AnzahlPlaetze> result;
for(const auto& ob: WartezimmerListe)
{
result.push_back(ob.getAnzahlPlaetze());
}
return result
}
你的代码正在工作,因为它应该工作,函数getWartezimmer()
返回的东西一旦它找到它。
在这个代码中
int Station::getWartezimmer(){
list<Wartezimmer>::iterator I;
for (i = WartezimmerListe.begin(); i != WartezimmerListe.end(); i++){
return i->getAnzahlPlaetze(); //--> this line
}
return 0;
};
在我标记的行中,函数getAnzahlPlaetze()
获取一个值并将其返回到return语句。然后会发生什么?return语句将这个值返回给main函数,并从那里继续执行。所以每次调用这个函数,它总是返回WartezimmerListe
向量的第一个值。
我不知道调用getWartezimmer()
后您正在寻找的确切行为。你想从数组的开头还是末尾取出一个元素?
你可以编辑getAnzahlPlaetze()
函数来返回一个元素,然后删除它,或者如果它符合你的需要,使用std::vector::pop_back()。这将有效地为每次调用提供一个新值。
如果你想保持原来的向量,但也想从它中取出值,你可以在类中定义一个静态变量,并使用它来索引向量。
我不认为你想要getAnzahlPlaetze()
返回向量的整个值,因为它没有意义。可以使用vector本身