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

Как получить undefined reference вместо вывода? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Пространства имен в Эклипс http://www.cyberforum.ru/cpp-beginners/thread635559.html
Добрый день. Переношу свой проект из IAR на Eclipse+Yagarto(gcc 4.6.2) Подскажите, из-за чего в hpp модулях проекта может не распознаваться тип namespase. Компилятор "говорит" "unknown type name 'namespase' ". В cpp файле обьявление областей переменных проглатывает, а в hpp при обьявлении класса внутри namespase выдает ошибки Пример namespace nm_dInput { class CdInput
C++ Получение предыдущего объекта из списка (std::list) #include <Iostream> int main() { std::list<COORD*> coords; COORD* pCoord; for(uint16 i = 0; i < 10; ++i) { http://www.cyberforum.ru/cpp-beginners/thread635548.html
C++ Повторное открытие файла через классы
Добрый день. Пишу программу, которая должна уметь считывать файл, выполнять проверку, и, в случае ошибки, возвращаться в начало и предлагать откорректировать данные в файле. Написал, но при изменении данных, к примеру с числа 5 на 20, программа все равно оперирует старыми данными, то есть числом 5. Это заголовочный файл: #include<iostream> #include<fstream> #include<vector> using...
C++ Использование функций excel в c++/c# (VisualStudio2010)
Всем привет. Нужно получить доступ к функциям excel из C#. Необходима функция "Подбор параметра". Может кто нибудь знает.... Нашел только как получить доступ к математическим функциям: Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction; textBox1.Text =...
C++/CLI WinForms Доступ к компонентам http://www.cyberforum.ru/cpp-beginners/thread635467.html
как в любой из последних четырёх функций получить доступ к элементам формы и к самой форме?? namespace mail_spam_admin { void cipher(char * str,char * str_cipher , char* cipher); void de_cipher(char * str,char * str_cipher , char* cipher); DWORD WINAPI ThreadWorkClient(StructurClientData &data); DWORD WINAPI ThreadNetworkAdminSystem(StructurNetworkAdminData &data);
C++ Triada метод сравнения триад (определить полный набор методов сравнения моментов времени) не могу понять самой сути задания, что от меня требуется. (необходимо сравнить отдельно часы минуты и секунды или например все переводить в секунды или как???) соответственно есть класс "Триада" (там переменные h,m,s) и "Время" связанные наследованием прошу помочь! подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1238 / 987 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
10.08.2012, 15:02     Как получить undefined reference вместо вывода?
Вот потому и «по-видимому». Я точно не уверен в семантике подобной записи, когда есть прототип функции (то есть компилятор знает, как её вызывать, и по идее может использовать), но нет реализации. По идее, это головная боль линкера — отыскать код функции по всем файлам.

Но откуда тогда компилятор знает, что кода нет, и выбрает вместо преобразования к C<T>::unspecified_bool_type, для которого как бы нет кода, другое преобразование, которое дольше (и без чтения 13.3.3.2 можно понять, что каст к юзер-тайпу лучше, чем каст к юзер-тайпу, а потом ещё каст к стандартному). Откуда он знает, что его нет?

Ведь действительно, если убрать шаблоны, то всё «не работает как надо». C → С::unspecified_bool_type ≡ void (*)() → bool не выбирается вместо C → С::unspecified_bool_type.

Возможно, тут как-то замешан вот этот пункт 14.5.3/4
When a function is defined in a friend function declaration in a class template, the function is instantiated when the function is used. The same restrictions on multiple declarations and definitions that apply to non-template function declarations and definitions also apply to these implicit definitions.
То есть если это не шаблонная функция, то она будет создана только при использовании. Возможно, выбор нужной перегрузки её поэтому и не видит, что она как бы не создана (потому что не используется). А нешаблонная функция создаётся вне зависимости от её использования.

Попробуем проверить. Есть такой код, он не ругается и выбирает цепочку до bool. А теперь такой. И тут ничего...

Тем более, что в 13.3.3.2 я что-то не увидел ничего про темплейты.

Единственное, что смущает, это 13.3.3/1, второй список, второй пункт. Там сказано, что нешаблонное лучше шаблонного. Но это только при условии, что обе цепочки равны по «хорошести».

Но есть ещё что-то в 13.3.3.1.2 про специальную трактовку юзер-кастов. Сейчас пытаюсь вкурить.

Добавлено через 14 минут
Что-то не разгорается.

В общем, пока что я могу сделать вывод, что неявные преобразования типов — это одно из величайших зол, которое внесли в C++. Избавились от пары лишних строчек при «очевидных» преобразованиях, зато можно запросто повеситься в пустой комнате.
 
Текущее время: 03:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru