проблемка с шаблонными функциями |
Здравствуйте, гость ( Вход | Регистрация )
проблемка с шаблонными функциями |
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 |
|
|
|
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 |
есть там такое. не помню, когда оно там точно проявляется... суть там была вроде бы в экспорте шаблонных функций из библиотек или типа того. я уже не помню, но гемора мне это тогда доставило выше крыши.
это уже вторая бага мелкософтовского компилера, на которую я вот так влоб натыкалась. причём вот с шаблонами они, похоже, и не собираются исправлять её даже. не, всё-таки паранойя меня замучила и я нашла эту статейку про несоответствия. думаю, всем программистам под кроссплатформу будет полезно с ней ознакомиться: Nonstandard Behavior of MSVC кстати, от студии к студии эта статейка не меняется: по ходу, индусы просто документируют баги Сообщение отредактировал Iron Bug - 22.12.2009, 12:20 |
|
|
Tonal |
22.12.2009, 15:04
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
А, экспорт. Он у многих не поддерживается.
Я и не пытался его использовать никогда. В g++ его тоже ещё недавно не было - сейчас не в курсе. Одно время вроде пытались его вообще из стандарта выкинуть - уж больно сложно он со стандартным циклом компиляция/линкинг сочитается. Но потом его в комо удалось реализовать - так что оставили. |
|
|
Текстовая версия | Сейчас: 25.11.2024, 16:26 |