Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Как заполнить по умолчанию динамический массив?

Приветствую господа! Есть некая структура Film и 2 массива: test и VideoArr (статичный и динамичный). Заполнить по умолчанию test можно без проблем. А вот как заполнить по умолчанию динамический массив VideoArr? Пробовал такой вариант: //VideoArr[0].genre="test"; //VideoArr[0].rating=7.3; //VideoArr[0].price=58.5; Числовые значения записываются нормально, а вот если в жанр записывать "test" компилятор ругается. От сюда вопрос, как будет наиболее правильно заполнить динамический массив строками по умолчанию? #include using namespace std; struct Film { char name[50]; char producer[50]; char genre[30]; float rating; float price; }; int size=10; Film test[10]={{"mars", "petia", "fantastika" ,11.5,5},{"terminator", "cameron", "fantastika" ,10.1,5}}; Film *VideoArr= new Film[size]; ...


Ответ

Вы используете статический инициализатор. В вашем случае (Си-стиль) можно обращаться непосредственно к полям. Возможно, есть смысл написать отдельную функцию CreateFilm(): const int size=10; Film **ptrTest = new *ptrTest[size]; for (int i=0; iname,"mars"); strcpy((*outPtr)->producer,"petia"); strcpy((*outPtr)->genre,"fantastika"); (*outPtr)->rating = 11.5; (*outPtr)->price = 5; }
void ReleaseFilm(Film **outPtr) { delete (*outPtr); (*outPtr) = nullptr; } В случае с С++ стоило бы воспользоваться конструктором по умолчанию.

Комментариев нет:

Отправить комментарий