c++:循环将最多运行一次(循环增量永远不会执行)



我知道有一个主题循环将运行最多一次(循环增量从未执行),但它并没有回答我的问题。

我有以下代码:

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本身

最新更新