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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отказ в связывании файлов утилитой make, отказ в связывании файлов утилитой make 
:(
    Опции темы
KQT
Дата 17.10.2007, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый вечер. К делу! Есть 4 файла: a.cpp, a.h, b.cpp, b.h. В b.h описан шаблон класса 
(пара переменных, переписан стандартный конструктор и добавлен новый..), в b.cpp - он 
реализован. "Библиотека" b.h подключена к a.h, a.h подключена к a.cpp - просто как пара. В 
a.cpp создаю объект класса: class_name<int> obj_name; - при компиле имею undefined 
reference to `class_name<int>::class_name()'. Почему?..
PM   Вверх
wils0n
Дата 17.10.2007, 07:50 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



попробуйте реализацию шаблонного класса из b.h произвести также в b.h и тем самым отказаться от b.cpp
грабли лежат скорее всего в шаблоне. честно говоря, я уже не помню почему, но объявление и реализацию шаблонного класса разделить как обычно нельзя. надо либо что-то дополнительно делать, либо забить.
я думаю, коллеги напишут почему и как.
PM MAIL WWW   Вверх
archimed7592
Дата 17.10.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Шаблоны не поддерживают раздельную компиляцию... Перенеси всю реализацию, зависящую от шаблонного параметра в заголовочный файл.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
KQT
Дата 18.10.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Благодарю. Параллельно нашел на форуме http://www.gamedev.ru/code/forum/?id=33825 ...

Цитата(wils0n @  17.10.2007,  07:50 Найти цитируемый пост)
wils0n 
 если можно поясните, что значит "делать что-то дополнительно"?

Похоже действительно придется менять компиллер или, на худой конец,  тащит этот баг препу: пусть сам е...
PM   Вверх
Fazil6
Дата 18.10.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата(KQT @  18.10.2007,  18:30 Найти цитируемый пост)
Похоже действительно придется менять компиллер или, на худой конец,  тащит этот баг препу: пусть сам е...

это не баг. Сказано же, что для шаблонов нельзя разделять объявление и реализацию, т.е надо тебе писать все в хедере.
Цитата(KQT @  18.10.2007,  18:30 Найти цитируемый пост)
если можно поясните, что значит "делать что-то дополнительно"?

ничего это не значит. Если компилятор не поддерживает для шаблонов разделение (а как сказано никто кроме Comeau его не поддерживает), то никакие доплнительные действия кроме #include *.cpp не помогут 
PM MAIL   Вверх
archimed7592
Дата 18.10.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(Fazil6 @  18.10.2007,  18:51 Найти цитируемый пост)
Если компилятор не поддерживает для шаблонов разделение (а как сказано никто кроме Comeau его не поддерживает), то никакие доплнительные действия кроме #include *.cpp не помогут  

Я не был бы столь категоричен: у меня явное инстанцирование - обыкновенная практика...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1022 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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