Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шаблоны, [Linker] Unresolved reference 
:(
    Опции темы
peetonn
Дата 30.11.2006, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



вот описание шаблона в хедр-файле:
Код

template <class T>
struct set: public List<T>{
        // операции над множествами
        set<T> operator+(set<T>);     
... // далее не важно
};

вот описание оператора в срр-файле:
Код

template <class T>
set<T> set<T>::operator+(set<T> B){
....// код
}

после объявления переменных в main: set<int> A,B,C;
и при написании строки C = A+B;
линкер ругается и выдает:
[Linker Error] Error: Unresolved external 'set<int>::operator +(set<int>)' referenced from ...\myprog\myprog.OBJ

может кто-нибудь знает, в чем тут дело и как это исправить, а, главное почему так происходит?
ЗЫ уже два часа мучаюсь
PM MAIL   Вверх
Dragon
Дата 30.11.2006, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 10.8.2006
Где: Киев

Репутация: нет
Всего: нет



Ну что ж smile В общем случае ты не можешь давать определение шаблона в заголовочном файле, а его реализацию - в исходном. Т.е. *.cpp файлы для шаблонов - не применимы. Вся реализация шаблона должна находится в заголовочном - т.е. быть доступна на этапе линковки каждого из объектных файлов, где она используется.

Это является нормальной функциональностью шаблонов, определенной в стандарте. Убери *.cpp файл.

P.S. Некоторые компиляторы поддерживают ключевое слово export - но это попадается очень редко - и в целях совместимости лучше не использовать.


Это сообщение отредактировал(а) Dragon - 30.11.2006, 03:25
PM MAIL ICQ   Вверх
peetonn
Дата 30.11.2006, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



 smile  smile  smile 
огромное спасибо!!!!
звиняюсь за такой вопрос - зелен еще))))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.