Здравствуйте, zhogar, Вы писали:
Z>В чем моя ошибка?
На каком языке ты пишешь? Почти наверное ты используешь компилятор для языка с++03 вместо компилятора для языка c++11. В с++03 твой код недопустим, что собственно и показывает сообщение об ошибке.
Z> на винде все прекрасно компилируется и работает, но под убунтой не хочет компилироваться
ОС тут ни при чём. Под виндой твой код также не является допустимым фрагментов программы на языке с++03.
Z>Пробую так:
Z>list_coordinates.push_back( new array_t( {x1, y1, x2, y2} ) );
Здравствуйте, watchmaker, Вы писали:
W>На каком языке ты пишешь? Почти наверное ты используешь компилятор для языка с++03 вместо компилятора для языка c++11. В с++03 твой код недопустим, что собственно и показывает сообщение об ошибке.
сейчас с под убунты вышел, но там чтото типа c++11 или gnu++11, не помню.
W>ОС тут ни при чём. Под виндой твой код также не является допустимым фрагментов программы на языке с++03.
Я знаю что ос тут не причем.
W>
Z>>list_coordinates.push_back( new array_t( {x1, y1, x2, y2} ) );
W>
Впрочем для 4.8.1 и в вашем случае должен выдавать не error а warning:
test01.cpp:11:44: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
list_coordinates.push_back( {1, 2, 3, 4} );
Уточните что ли компилятор, который ругается непотребно =) Попробовал сейчас окаменевший от старости GCC 4.4.3, там да:
$ g++ test01.cpp --std=gnu++0x
test01.cpp: In function ‘int main()’:
test01.cpp:11: error: no matching function for call to ‘std::list<array_t, std::allocator<array_t> >::push_back(<brace-enclosed initializer list>)’
Но там просто ещё не доделали новый стандарт. Пользуйтесь новыми компиляторами.