Wskaźnik na tablicę struktur
Ostatnio zmodyfikowano 2018-07-07 10:54
cyrkiel Temat założony przez niniejszego użytkownika |
Wskaźnik na tablicę struktur » 2018-07-06 12:43:15 Witam, mam taki program: #include <iostream> #include <string>
struct Batonik { std::string brand; float weight; int calories; };
int main() { using namespace std; Batonik * kuk = new Batonik[ 3 ]; kuk[ 0 ] = { "Snickers", 3.1, 280 }; kuk[ 1 ] = { "Mars", 2.9, 260 }; kuk[ 2 ] = { "Princessa", 2.5, 200 }; cout << kuk[ 0 ].brand << ", " << kuk[ 0 ].weight << ", " << kuk[ 0 ].calories << "\n"; cout << kuk[ 1 ].brand << ", " << kuk[ 1 ].weight << ", " << kuk[ 1 ].calories << "\n"; cout << kuk[ 2 ].brand << ", " << kuk[ 2 ].weight << ", " << kuk[ 2 ].calories << "\n"; delete[] kuk; return 0; } Wszystko z nim w porządku, natomiast kiedy w miejsce linijki std::string brand; wstawię jakąś tablicę, np. char brand[ 20 ]; program nie chce się skompilować. Czy da się utworzyć wskaźnik na tablicę struktur, w której jedną z danych jest tablica znaków, a następnie przypisać przez wskaźnik dane tej tablicy? Dodam, że używam Dev-C++ 5.11. |
|
pekfos |
» 2018-07-06 14:58:22 kuk[ 0 ] = Batonik { "Snickers", 3.1, 280 }; kuk[ 1 ] = Batonik { "Mars", 2.9, 260 }; kuk[ 2 ] = Batonik { "Princessa", 2.5, 200 }; Możesz to zrobić tak. |
|
cyrkiel Temat założony przez niniejszego użytkownika |
» 2018-07-06 18:19:26 Teraz działa, dziękuję. A czy mógłbyś mi wyjaśnić dlaczego do tablicy trzeba to dodać, a do obiektu string już nie? |
|
pekfos |
» 2018-07-06 20:20:22 Najwyraźniej GCC ma opory przed tym zapisem. W Visual Studio akurat ta część twojego zapisu działa, za to kompilator krzyczy na twoją inicjalizację floatów, bo jest zawężająca z double, co od C++11 jest zabronione. |
|
Monika90 |
» 2018-07-07 10:54:15 Ale to nie jest zawężająca konwersja, bo wartość źródłowa jest wyrażeniem stałym. |
|
« 1 » |