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

[C++] error: base operand of '->' has non-pointer type 'batonik'|

Ostatnio zmodyfikowano 2015-06-24 23:11
Autor Wiadomość
arek199602
Temat założony przez niniejszego użytkownika
[C++] error: base operand of '->' has non-pointer type 'batonik'|
» 2015-06-24 22:22:09
Witam w książce Stephen Prata "Język C++ Szkoła programowania" Wydanie VI mam zaalokować tablicę struktur batonik za pomocą operatora new. Wiem, że podobny temat już był i rozwiązaniem jest użycie kropki. Ale chciałbym wiedzieć dlaczego, ponieważ Prata pisze, że jeśli identyfikatorem struktury jest wskaźnik to powinno się używać operatora strzałki, a nie kropki.

In function 'int main()':
|14|error: base operand of '->' has non-pointer type 'batonik'|
|15|error: base operand of '->' has non-pointer type 'batonik'|
|16|error: base operand of '->' has non-pointer type 'batonik'|
|18|error: base operand of '->' has non-pointer type 'batonik'|

Kod źrodłowy
C/C++
#include<iostream>
struct batonik
{
    char marka_slodyczy[ 20 ];
    float waga;
    int liczba_kalorii;
};
int main()
{
    using namespace std;
   
    batonik * ps = new batonik[ 3 ];
    cout << "Marki 3 batonow: ";
    cin.getline( ps[ 0 ]->marka_slodyczy, 20 );
    cin.getline( ps[ 1 ]->marka_slodyczy, 20 );
    cin.getline( ps[ 2 ]->marka_slodyczy, 20 );
    cout << "Podaj ich wage: ";
    cin >> ps[ 0 ]->waga;
    cin >> ps[ 1 ]->waga;
    cin >> ps[ 2 ]->waga;
    cout << "Powiedz jaka zawieraja liczbe kalorii: ";
    cin >> ps[ 0 ]->liczba_kalorii;
    cin >> ps[ 1 ]->liczba_kalorii;
    cin >> ps[ 2 ]->liczba_kalorii;
   
    cout << "Oto informacje na temat 3 producentow batonow: \n";
    cout << "Marka:" << ps[ 0 ]->marka_slodyczy << ", waga: " << ps[ 0 ]->waga
    << "kalorie: " << ps[ 0 ]->liczba_kalorii << endl;
    cout << "Marka:" << ps[ 1 ]->marka_slodyczy << ", waga: " << ps[ 1 ]->waga
    << "kalorie: " << ps[ 1 ]->liczba_kalorii << endl;
    cout << "Marka:" << ps[ 2 ]->marka_slodyczy << ", waga: " << ps[ 2 ]->waga
    << "kalorie: " << ps[ 2 ]->liczba_kalorii << endl;
   
    delete[] ps;
   
    return 0;
   
}

Dzięki za pomoc
P-134049
Monika90
» 2015-06-24 22:48:10
ps to jest wskaźnik, ale ps[0] już nie, ps[0] to jest L-wartość typu batonik.
Gdyby Cię to interesowało to dodam, że ps[i] znaczy to samo co (*(ps + i))
P-134050
arek199602
Temat założony przez niniejszego użytkownika
» 2015-06-24 23:11:11
Już wiem o co chodzi. Dzięki
P-134052
« 1 »
  Strona 1 z 1