21 / 4 / 2
Регистрация: 05.07.2015
Сообщений: 126
1

Структуры выделение динамической памяти под массивы

05.10.2015, 13:28. Показов 1339. Ответов 5
Метки нет (Все метки)

Здравствуйте,
Мне нужно создать массив из элементов структуры, и использовать для этого динамическую память,подскажите пожалуйста, в чем тут ошибка , я думаю что с синтаксисом, но не могу понять что именно, спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<string>
using namespace std;
struct CandyBar
{
string name;
float weight;
int calories;
};
 
int main()
{
    CandyBar* Array= new CandyBar[3];
    Array[3]=
    {
        {"Mocha Munch", 2.3, 350},
        {"Bumbl", 5.3, 3000},
        {"Lion", 100, 8000},
    };
    cout<<"There are such chocolate here: "<<Array[0]->name<<"\nIts weight is: "<<Array[0]->weight<<" ft\nIt has "<<Array[0]->calories<<" calories\n\n";
    cout<<"There are such chocolate here: "<<Array[1]->name<<"\nIts weight is: "<<Array[1]->weight<<" ft\nIt has "<<Array[1]->calories<<" calories\n\n";
    cout<<"There are such chocolate here: "<<Array[2]->name<<"\nIts weight is: "<<Array[2]->weight<<" ft\nIt has "<<Array[2]->calories<<" calories\n\n";
delete []Array;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2015, 13:28
Ответы с готовыми решениями:

Выделение динамической памяти для чтения каждой структуры из файла
Здравствуйте! Никак не получается выделить динамическую память под каждую структуру из файла,...

Выделение динамической памяти под массив структур
Добрый день, уважаемые! Пишу функцию выделения памяти под массив структур. Но программа не хочет...

Выделение области динамической памяти под матрицу
Код: #include&lt;iostream&gt; using namespace std; int main() { int n,m; int i,j,q; ...

Выделение динамической памяти под массив структур
Здравствуйте! Пытаюсь выделить память под массив структур, считать с клавиатуры, вывести на экран и...

5
Модератор
Эксперт С++
12756 / 10218 / 6142
Регистрация: 18.12.2011
Сообщений: 27,356
05.10.2015, 13:32 2
Лучший ответ Сообщение было отмечено Melany как решение

Решение

Цитата Сообщение от Melany Посмотреть сообщение
Array[3]= { {"Mocha Munch", 2.3, 350}, {"Bumbl", 5.3, 3000}, {"Lion", 100, 8000}, };
Такое присвоение недопустимо.
Каждый элемент структуры присваивается самостоятельно.
или
C++
1
2
3
4
5
6
CandyBar Array[3]=
    {
        {"Mocha Munch", 2.3, 350},
        {"Bumbl", 5.3, 3000},
        {"Lion", 100, 8000},
    };
1
251 / 127 / 54
Регистрация: 04.05.2013
Сообщений: 346
05.10.2015, 13:38 3
Лучший ответ Сообщение было отмечено Melany как решение

Решение

C++
1
2
3
4
5
    CandyBar* Array = new CandyBar[3]{ { "Mocha Munch", 2.3f, 350 }, { "Bumbl", 5.3f, 3000 }, { "Lion", 100, 8000 } }; 
    cout << "There are such chocolate here: " << Array[0].name << "\nIts weight is: " << Array[0].weight << " ft\nIt has " << Array[0].calories << " calories\n\n";
    cout << "There are such chocolate here: " << Array[1].name << "\nIts weight is: " << Array[1].weight << " ft\nIt has " << Array[1].calories << " calories\n\n";
    cout << "There are such chocolate here: " << Array[2].name << "\nIts weight is: " << Array[2].weight << " ft\nIt has " << Array[2].calories << " calories\n\n";
    delete[]Array;
Добавлено через 3 минуты
А вообще вывод лучше оформить отдельной функцией, которой передавать ссылку на печеньку. У меня глаз дергается, когда вижу такой код.
1
21 / 4 / 2
Регистрация: 05.07.2015
Сообщений: 126
05.10.2015, 13:44  [ТС] 4
Barrent, )))) Спасибо, да мне тоже не очень приятно на это смотреть, я так пока разбираюсь, следующим этапом будет оптимизация, спасибо еще раз,

Добавлено через 1 минуту
zss, Спасибо
0
Модератор
Эксперт С++
12756 / 10218 / 6142
Регистрация: 18.12.2011
Сообщений: 27,356
05.10.2015, 14:53 5
Barrent, такая инициализация не прокатит.
error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
При выделении памяти для массива используется конструктор по умолчанию.
1
251 / 127 / 54
Регистрация: 04.05.2013
Сообщений: 346
05.10.2015, 14:57 6
zss,
Хм, в VS 2015 никаких ошибок.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2015, 14:57
Помогаю со студенческими работами здесь

Выделение динамической памяти под массив из класса
Допустим, есть class c, и он включает в себя char-массив a: class c { private: char a;...

Выделение памяти под структуры
Когда я только знакомился с кодингом на С(С++) я скачивал с инета очень много всякой литературы......

Выделение памяти под массивы
int **mas1 = new int*; for (int e = 0; e &lt; q; e++) mas1 = new int; int **mas2 = new...

Выделение памяти под массивы в Windows Forms
Всем здрасте) Такой вопрос, уже бьюсь несколько дней. Я создал форму где есть таблица datagridview...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru