error przy vector

0

Witam, mam napisany kod i error: 'imie' : is not a member of 'std::vector<_Ty>'. Mam jakoś includować imie, czy jakoś inaczej się radzi z takimi błędami? ;)

 void pobierz(vector <indeks>& o, int &ile)
{
	string imies, nazwisko;
    cout<<"Podaj imie i nazwisko: ";
    cin >>imies;
	cin>>nazwisko;
	o.imie.push_back(imies);
	o.nazwisko.push_back(nazwisko);
	string napis;
	float ocenka;
    for(int i=0;i<ile;i++)
    {
        cout<<"Najpierw przedmiot, potem ocena ";
		cin>>napis;
		cin>>ocenka;
		o.oceny[i].przedmiot.push_back(napis);
		o->oceny[i]->wartosc.push_back(ocenka);
}
}
struct ocena
{
string przedmiot;
float wartosc;
};

struct indeks
{

string imie;
string nazwisko;
ocena oceny[15];
int numer_albumu;
}; 
3

Wróżenie z fusów. Dlaczego?

  • Pokaż kod struktury / klasy indeks, bo nie wiadomo jakie w ogóle masz tam pola i jakiego są typu;
  • To o.imie.push_back(imies); jest kompletnie bez sensu bo push_back robisz do wektora, a nie do jego pola (chyba, że jest ono wektorem). Powinno być o.push_back(obiekt);
  • To o->oceny[i]->wartosc.push_back(ocenka); Ci nie zadziała, bo o nie jest wskaźnikiem tylko referencją.
  • Niepotrzebnie przekazujesz ile przez referencje, bo nigdzie tej wartości nie modyfikujesz, a po drugie jest to zwykły int.
5

Jak masz porządnie zrobiony indeks to:

    o.push_back(indeks(imies,nazwisko));

Jak nie to:

    indeks idx;
    idx.imie=imie;
    idx.nazwisko=nazwisko;
    o.push_back(idx);

Powyższe to są tylko przypuszczenia, pokaż jak zadeklarowałeś ten indeks.

0

Przepraszam, nie pomyślałem przed założeniem tematu. Już wklejone w pierwszym poście
Poprawiłem, kompilator nie wykrywa błędów, ale nie rozumiem skąd będzie wiedział, że np. to:

o.push_back(indeks(imies,nazwisko)); 

, ma przypisać do indeks.imie i indeks.nazwisko? :)

0

nie rozumiem skąd będzie wiedział, że np. to:
o.push_back(indeks(imies,nazwisko));
, ma przypisać do indeks.imie i indeks.nazwisko?

Musisz dopisać sobie odpowiedni konstruktor do tej struktury.
A zamiast tej tablicy ocena oceny[15]; zrób wektora. Jak będziesz chciał wprowadzić więcej niż 15 ocen to nie trzeba będzie ręcznie zmieniać rozmiaru.

2
struct ocena
  {
   string przedmiot;
   float wartosc;
   ocena(const string &przedmiot,float wartosc):przedmiot(przedmiot),wartosc(wartosc) {}
  };
 
struct indeks
  { 
   string imie;
   string nazwisko;
   int numer_albumu;
   vector<ocena> oceny;
   indeks(const string &imie,const string &nazwisko,int numer_albumu):imie(imie),nazwisko(nazwisko),numer_albumu(numer_albumu) {}
  };

1 użytkowników online, w tym zalogowanych: 0, gości: 1