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

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

Восстановить пароль Регистрация
 
 
VIKT0R
8 / 8 / 2
Регистрация: 15.11.2011
Сообщений: 78
10.07.2015, 10:34     Почему не компилируется list.push_back( double[3] ) ? #1
А почему компилятор отказывается добавлять в список массив?

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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 10:34     Почему не компилируется list.push_back( double[3] ) ?
Посмотрите здесь:

list.push_back ошибка! C++
C++ Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)"
C++ Не компилируется почему-то
C++ почему не компилируется ?
Почему не компилируется? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6426 / 3800 / 880
Регистрация: 30.01.2014
Сообщений: 6,594
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] ) ?
Еще ссылки по теме:

Про list push_back C++
Почему перестает работать программа при замене double на long double? C++
Почему мы пишем double x (double y)? а не через запятую double x,y 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] ) ?
Ответ Создать тему
Опции темы

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