class vector utskrift av vector? c++

Permalänk
Medlem

class vector utskrift av vector? c++

varför blir det fel meddelande när jag ska skriva vector ListaMedStad

#include <iostream>
#include <vector>
using namespace std;

class Stad
{
public:
string _stad;
int _temp;
};
void AngeInfoOmStad(vector<Stad> ListaMedStad, string _stad, int _temp)
{
Stad nyStad;
nyStad._stad = _stad;
nyStad._temp = _temp;
ListaMedStad.push_back(nyStad);

}

int main()
{
string _stad;
int _temp;

vector<Stad> ListaMedStad;

cout << "Ange stad" << endl;
cin >> _stad;
cout << "Ange temperatur" << endl;
cin >> _temp;

AngeInfoOmStad(ListaMedStad, _stad, _temp);

for (int i = 0; i < ListaMedStad.size(); i++)
{
cout << ListaMedStad[i] << endl; // Här blir det fel medd på << fattar inte
}

return(0);
}

Permalänk
Medlem

Det finns ingen <<-operator definierad för Stad, se Learn C++.

Permalänk
Hedersmedlem
Skrivet av perost:

Det finns ingen <<-operator definierad för Stad, se Learn C++.

Lite väl komplicerat svar för en nybörjare.

"Rätt" svar på den här nivån är att TS försöker skriva ut Stad-objektet, när hen förmodligen vill skriva ut stadens Namn. C++ fattar inte vad det betyder att "skriva ut en stad".

Permalänk
Medlem

fattar fortfarande inte

Permalänk
Medlem

Byt ListaMedStad[i] till ListaMedStad[i]._stad

Sen nästa fel du kommer få (att inget printas) är för att din AngeInfoOmStad funktion tar en kopia av listan och lägger in staden i kopian, sen försvinner kopian av listan direkt. Det kan du fixa genom att byta
void AngeInfoOmStad(vector<Stad> ListaMedStad, string _stad, int _temp)
till
void AngeInfoOmStad(vector<Stad>& ListaMedStad, string _stad, int _temp)

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.