[C++] error: base operand of '->' has non-pointer type 'batonik'|
Ostatnio zmodyfikowano 2015-06-24 23:11
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 #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 |
|
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)) |
|
arek199602 Temat założony przez niniejszego użytkownika |
» 2015-06-24 23:11:11 Już wiem o co chodzi. Dzięki |
|
« 1 » |