Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

struktury

Ostatnio zmodyfikowano 2013-02-28 01:26
Autor Wiadomość
kloperman
Temat założony przez niniejszego użytkownika
struktury
» 2013-02-27 22:15:27
Mam taki program :

C/C++
#include <iostream>
#include <string>
using namespace std;

struct dane
{
    string imie;
    int punkty;
};

int main()
{
    int L;
    cin >> L;
    dane * ludzie = new dane[ L ];
   
    for( int l = 0; l < L; l++ )
    {
        cin >>( * ludzie[ l ] ).imie; // pierwszy sposob
        cin >> ludzie[ l ]->punkty; // drugi sposob
    }
    return 0;
}

Kompletnie nie wiem co jest w nim nie tak . W obu sposobach wprowadzenia danych jest jakis blad .

Pierwszy sposob:
error: no match for 'operator*' in '**(ludzie + ((sizetype)(((unsigned int)l) * 8u)))'
Drugi sposob:
error: base operand of '->' has non-pointer type 'dane'
P-77269
killjoy
» 2013-02-27 22:28:19
Kiedy przydzielasz pamięć wskaźnikowi i odwołujesz się przez operator [] do komórki tablicy, to kompilator traktuje to jako odwołanie się przez normalny obiekt (chyba) a nie przez wskaźnik , jak chcesz się koniecznie odwołać przez -> to możesz zrobic tak,
C/C++
cin >>( ludzie + l )->punkty;
P-77273
Monika90
» 2013-02-27 22:28:59
Twoja alokowana dynamicznie tablica, to tablica struktur, a nie tablica wskaźników do struktur, więc do pól odwołujesz się zwyczajnie
ludzie[ i ].imie
, bez żadnych gwiazdek czy strzałek.
P-77274
usmiech
» 2013-02-28 01:26:25
<< removed >>
P-77287
« 1 »
  Strona 1 z 1