В VS.net все просто на ура проходит, g++ как обычно номер выкидывает:
no matching function for call to 'vector<int,allocator<int> >::at (int &)'
Есть предложения? Я вообще у себя исключения использую для обработки ошибок, не хотелось бы везде лишние проверки на вхождение в диапазон проводить, так что ну очень не хочется использовать альтернативные способы получения значения вектора.
Здравствуйте, _sky_, Вы писали:
__>Здравствуйте.
__>Для G++ закон не писан что ли?
__>Есть вектор: __>std::vector <int> field_max_length;
__>где-то вызываю: __>field_max_length.at( field_counter );
__>В VS.net все просто на ура проходит, g++ как обычно номер выкидывает: __>no matching function for call to 'vector<int,allocator<int> >::at (int &)'
__>Есть предложения? Я вообще у себя исключения использую для обработки ошибок, не хотелось бы везде лишние проверки на вхождение в диапазон проводить, так что ну очень не хочется использовать альтернативные способы получения значения вектора.
У тебя просто старая версия gcc. Обнови его или поставь STLPort.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Здравствуйте, yxiie, Вы писали:
Y>Здравствуйте, crable, Вы писали:
C>>У тебя просто старая версия gcc. Обнови его или поставь STLPort.
Y>кстати как прикрутить его к MinGW 3.2.3 ?
С MinGW я не сталкивался, но судя по ошибкам, у тебя заголовки STLPort ищутся после стандартных. Естественно это приводит к проблемам. Разберись как его нужно правильно собирать.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Здравствуйте, crable, Вы писали:
C>С MinGW я не сталкивался, но судя по ошибкам, у тебя заголовки STLPort ищутся после стандартных. Естественно это приводит к проблемам. Разберись как его нужно правильно собирать.
мда... а я почему-то ожидал от тебя толкового ответа... мог бы просто не отвечать.
Здравствуйте, yxiie, Вы писали:
Y>Здравствуйте, crable, Вы писали:
C>>С MinGW я не сталкивался, но судя по ошибкам, у тебя заголовки STLPort ищутся после стандартных. Естественно это приводит к проблемам. Разберись как его нужно правильно собирать.
Y>мда... а я почему-то ожидал от тебя толкового ответа... мог бы просто не отвечать.
Какая версия STLPort, gcc?
Посмотри определен ли _STLP_NO_EXCEPTION_SPEC.
Ты настройки какие-нибудь менял?
The last good thing written in C was Franz Schubert's Symphony No. 9.
Здравствуйте, yxiie, Вы писали:
Y>Здравствуйте, crable, Вы писали:
Y>>>мда... а я почему-то ожидал от тебя толкового ответа... мог бы просто не отвечать.
C>>Какая версия STLPort, gcc?
Y>там по ссылке ведь написано MinGW 3.2.3, STLport 4.6.2
C>>Посмотри определен ли _STLP_NO_EXCEPTION_SPEC.
Y>нет, определен просто Y>#define _STLP_NO_EXCEPTIONS 1
Похоже ошибки как раз из-за этого. C>>Ты настройки какие-нибудь менял?
Y>да, но с дефолтными настройками вроде толку не было. эксепшны отключил, т.к. в проекте нельзя эксепшны юзать.
Хмм... А если перехватывать исключения стандартной библиотеки? Насколько я знаю они выкидываются достаточно редко, посмотри стандарт.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Здравствуйте, crable, Вы писали:
C>Здравствуйте, yxiie, Вы писали:
Y>>Здравствуйте, crable, Вы писали:
Y>>>>мда... а я почему-то ожидал от тебя толкового ответа... мог бы просто не отвечать.
C>>>Какая версия STLPort, gcc?
Y>>там по ссылке ведь написано MinGW 3.2.3, STLport 4.6.2
C>>>Посмотри определен ли _STLP_NO_EXCEPTION_SPEC.
Y>>нет, определен просто Y>>#define _STLP_NO_EXCEPTIONS 1 C>Похоже ошибки как раз из-за этого. C>>>Ты настройки какие-нибудь менял?
Y>>да, но с дефолтными настройками вроде толку не было. эксепшны отключил, т.к. в проекте нельзя эксепшны юзать. C>Хмм... А если перехватывать исключения стандартной библиотеки? Насколько я знаю они выкидываются достаточно редко, посмотри стандарт.
Здравствуйте, crable, Вы писали:
Y>>да, но с дефолтными настройками вроде толку не было. эксепшны отключил, т.к. в проекте нельзя эксепшны юзать. C>Хмм... А если перехватывать исключения стандартной библиотеки? Насколько я знаю они выкидываются достаточно редко, посмотри стандарт.
Здравствуйте, _sky_, Вы писали:
__>Здравствуйте.
__>Для G++ закон не писан что ли?
__>Есть вектор: __>std::vector <int> field_max_length;
__>где-то вызываю: __>field_max_length.at( field_counter );
__>В VS.net все просто на ура проходит, g++ как обычно номер выкидывает: __>no matching function for call to 'vector<int,allocator<int> >::at (int &)'
__>Есть предложения? Я вообще у себя исключения использую для обработки ошибок, не хотелось бы везде лишние проверки на вхождение в диапазон проводить, так что ну очень не хочется использовать альтернативные способы получения значения вектора.
Можно просто добавить в реализацию std::vector этот метод. Ничего сложного, пять строчек.
Правильно работающая программа — просто частный случай Undefined Behavior