Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
voipp |
20.12.2009, 17:02
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0
|
шаблонные функции :
Вот их опредления : Вот как они используются в одной программе : m - экземпляр класса где находятся шаблонные функции center m.mObject,mIso - CVector и два CMatrix Вот ошибка компилятора - Пробовал исправить отладчиком но при отладке точки остановки он не видит(отладчик исправен)0_0 |
|
|
|
|
Litkevich Yuriy |
20.12.2009, 17:15
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(voipp @ 20.12.2009, 20:02) Link Ошибка 1 как-то не информативно
|
|
|
|
|
vanner |
20.12.2009, 17:22
Сообщение
#3
|
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 27.8.2009 Пользователь №: 1025 Спасибо сказали: 1 раз(а) Репутация: 0
|
Что же ты собрался отлаживать, еще ничего не скомпилировалось?
|
|
|
|
|
voipp |
20.12.2009, 20:27
Сообщение
#4
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0
|
|
|
|
|
|
Tonal |
21.12.2009, 9:25
Сообщение
#5
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
2 voipp Определение шаблонных функций - это их код - его ты привёл в первом куске кода. Во втором - объявления.
Подобная ошибка может появится тогда, когда определение шаблона находится в одном С++ файле а его использование - в другом. Наиболее просто исправляется помещением определения в заголовок (*.h) |
|
|
|
|
Iron Bug |
22.12.2009, 10:25
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
ну, если компилер не мелкософтовский - может, поможет помещение определения в заголовок.
у мелкософта надо прямо в сишный(!) файл засовывать тэмплейты. иначе, сцуко, он их выкусит и потом сругнётся, что нету у тебя такой функции. об этом очень мелко написано где-то в MSDN - типа, несоответствия компилера мелкософт стандартам. |
|
|
|
|
Tonal |
22.12.2009, 11:24
Сообщение
#7
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
2 Iron Bug Дай ссылочку, а? Что-то я такой особенности не помню - не натыкался...
И тот же boost устроен практически одинаково и для VC и для g++. Другое дело, что в том же багланде я вовсю использовал следующий финт: реализацию шаблонов-членов пихал в исходник а в его конце явно воплощал (инстансировал) шаблоны нужными типами. После этого шаблоны для этих типов использовались в других исходниках. А вот с g++ такой номер не прошел. Правда это было довольно давно. |
|
|
|
|
Iron Bug |
22.12.2009, 12:19
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
есть там такое. не помню, когда оно там точно проявляется... суть там была вроде бы в экспорте шаблонных функций из библиотек или типа того. я уже не помню, но гемора мне это тогда доставило выше крыши.
это уже вторая бага мелкософтовского компилера, на которую я вот так влоб натыкалась. причём вот с шаблонами они, похоже, и не собираются исправлять её даже. не, всё-таки паранойя меня замучила и я нашла эту статейку про несоответствия. думаю, всем программистам под кроссплатформу будет полезно с ней ознакомиться: Link кстати, от студии к студии эта статейка не меняется: по ходу, индусы просто документируют баги Сообщение отредактировал Iron Bug - 22.12.2009, 12:20 |
|
|
|
|
Tonal |
22.12.2009, 15:04
Сообщение
#9
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
А, экспорт. Он у многих не поддерживается.
Я и не пытался его использовать никогда. В g++ его тоже ещё недавно не было - сейчас не в курсе. Одно время вроде пытались его вообще из стандарта выкинуть - уж больно сложно он со стандартным циклом компиляция/линкинг сочитается. Но потом его в комо удалось реализовать - так что оставили. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 11:28 |