Массив структур...
struct sss {
AnsiString a;
AnsiString b;
} *bcd;
bcd = (sss*)malloc(sizeof(sss)*10);
bcd[5].a="aaaaaa";
free(bcd);
почему в BCB5 на строчке bcd[5].a = ... вылетает исключение??????? X)- :???: :{
А ещё лучше, используйте vector<sss>
Цитата:
Originally posted by fellow
Потому что AnsiString - это класс. Чтобы иметь доступ к экземпляру AnsiString, необходимо сначала его создать. Создание экземпляра класса производится с помощью конструктора. Вы же конструктор не вызываете, а просто выделяете низкоуровневой функцией фрагмент памяти. Хотите массив структур, размещённый динамически, тогда используйте, на худой конец, что-нибудь наподобие sss *bcd = new sss[10];
А ещё лучше, используйте vector<sss>
Потому что AnsiString - это класс. Чтобы иметь доступ к экземпляру AnsiString, необходимо сначала его создать. Создание экземпляра класса производится с помощью конструктора. Вы же конструктор не вызываете, а просто выделяете низкоуровневой функцией фрагмент памяти. Хотите массив структур, размещённый динамически, тогда используйте, на худой конец, что-нибудь наподобие sss *bcd = new sss[10];
А ещё лучше, используйте vector<sss>
Может все проще...
bcb->a="qweqw";
все ж bcb - это указатель...
Хотя конечно с конструктором класса не хорошо получается
Цитата:
Originally posted by UserPro
Может все проще...
bcb->a="qweqw";
все ж bcb - это указатель...
Хотя конечно с конструктором класса не хорошо получается
Может все проще...
bcb->a="qweqw";
все ж bcb - это указатель...
Хотя конечно с конструктором класса не хорошо получается
Не проще. bcb->a это доступ к элементам текущего указателя на структуру. А человек работает с массивом так что запись bcb[5].a абсолютно правильная. А вот дело действительно в том, что человек пытается обратиться к НЕ СОЗДАННОМУ экземпляру класса AnsiString.