Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 78
#1

Почему не компилируется list.push_back( double[3] ) ? - C++

10.07.2015, 10:34. Просмотров 625. Ответов 21
Метки нет (Все метки)

А почему компилятор отказывается добавлять в список массив?

C++
1
2
3
4
5
6
std::list<double[3]>    lst;   // у компилятора нет замечаний
 
double  arr[3] = { 0 };
 
lst.push_back( arr );   //  а здесь выдает error C2075: Target of operator new():
//для инициализации массива требуются фигурные скобки
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
10.07.2015, 18:01     Почему не компилируется list.push_back( double[3] ) ? #21
Цитата Сообщение от Voivoid Посмотреть сообщение
Почему тогда здесь ошибка компиляции-то?
Справедливости ради, в массиве сам адрес начала неизменен, а не его элементы. Поэтому правильнее так:
http://ideone.com/qoW0fC

Это, отнюдь, не означает, что я хочу ввязываться в ваш спор.

Но на твоем месте я бы апеллировал к типизации с точки зрения языка, а не к ошибкам компиляции.
Однако я не был бы на твоем месте, т.к. считаю, что вы оба правы, просто с разных позиций.

Добавлено через 2 минуты
Прошу прощения, не та ссылка. Исправил на верную

Первоначальный пример 1 в 1: http://ideone.com/AHTv2p
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 14:38     Почему не компилируется list.push_back( double[3] ) ?
Еще ссылки по теме:

C++ ааааааааааааааааа, почему не компилируется?
Почему не компилируется? C++
Про list push_back C++
Почему не компилируется C++
Почему не компилируется с шаблонами? C++

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

Или воспользуйтесь поиском по форуму:
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 78
11.07.2015, 14:38  [ТС]     Почему не компилируется list.push_back( double[3] ) ? #22
Цитата Сообщение от Voivoid Посмотреть сообщение
Да дело даже не в стиле, а в том, что в C++ нельзя массивы передавать по значению.
Ну, в общем, действительно, массивов double[3] (точек) в программе много, так что передавать их туда-сюда по значению было бы неморально, поэтому сделал в итоге list<double*>. Спасибо всем!
Yandex
Объявления
11.07.2015, 14:38     Почему не компилируется list.push_back( double[3] ) ?
Ответ Создать тему
Опции темы

Текущее время: 02:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru