Witam!
Stworzyłem dynamicznie zaalokowaną tablicę struktur, w których to strukturach jedno z pól stanowi tablica znaków char o wielkości 20.
Gdy próbuję odwołać się do tego pola (przyjmując że snack to adres pierwszej struktury = &snack[0]) używając operatora -> i przypisać temu polu łańcuch napisowy, kompilator pokazuje następujący błąd:
incompatible types in assignment of 'const char [9]' to 'char [20]'|
Rozumiem, że napisy w programie są zapisywane jako stałe, przy czym ten ma długość 8 znaków + znak NULL, czyli razem 9. Co zrobić w takim razie by używając tablicy char przypisać temu polu napis?
Dodam, że użycie klasy string w strukturze rozwiązuje cały problem, lecz zastanawia mnie co robię źle w tym przypadku.
snack->weight i snack->kcal działają poprawnie.
#include <iostream>
struct Batonik
{
char brand[20];
float weight;
int kcal;
};
int main()
{
using namespace std;
Batonik * snack = new Batonik [3];
snack->brand = "Snickers";
snack->weight = 45.5;
snack->kcal = 220;
return 0;
}