![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
wowka19 |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Не пойму что значит эта ошибка и почему она выскакивает:
obj\Debug\main.o||In function `main':| C:\....\main.cpp|8|undefined reference to `Node<int>::Node()'| C:\....\main.cpp|10|undefined reference to `Node<int>::~Node()'| ||=== Build finished: 2 errors, 0 warnings ===| Вот собсно код: main.cpp
node.h
node.cpp
|
||||||
|
|||||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Добавь в node.cpp:
|
|||
|
||||
wowka19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
не помогает...
если у тебя работает - покажи код полностью. |
|||
|
||||
586 |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Там у тебя ещё были другие синтаксические ошибки...
Добавлено через 11 минут и 37 секунд Строка "template class Node<int>;" нужна, когда пытаются писать код шаблонного класса с CPP-файле. Обычно же, описание шаблонного класса и код пишут в H-файле, а в CPP-файле не пишут. Лучше перенеси код в H-файл:
|
||||||||
|
|||||||||
wowka19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
спасибо. но покажи ПОЖАЛУЙСТА код, где файлы как у меня организованы. То есть реализация отдельна.
И объясни почему шаблоны описывают в одном H файле. Зачем? ведь на все смысл есть. |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
Я их и показал: Первый код - main.cpp Второй код - node.cpp Третий код - node.h Чтобы для всех CPP-файлов, куда подключается node.h, была доступна реализация кода. Когда, например, объявляется класс Node<int> и Node<char>, то для этих классов компилятор генерит разный машинной код. А чтобы компилятор мог его сгенерить, должна быть доступна реализация кода. |
|||
|
||||
wowka19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Подожди... как это
? Мне же нужно чтоб в этих свойствах хранились объекты любого класса. То есть тип этих указателей должен быть T. В общем видать я запутался. Может ты покажешь как надо организовать связный список (пусть односвязный) при помощи шаблонов? Чтоб потом при помощи этого шаблона-класса можно было организовать список любого класса. |
|||
|
||||
wowka19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
---------------------------------------------------------------------------------
А можно ли так делать:
? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
http://www.sgi.com/tech/stl/stl_list.h а ты проверь -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
можно. Обычно, так и делают. Короче, запомни, объявление и реализация шаблона должны быть доступны во всех модулях, где шаблон используется. Если ты объявление и реализацию поместишь в один хидер (главное, не забудь указывать inline для всех методов), это правило будет выполнено. Зачем это вообще? Ты что делаешь список или один контейнер на всю программу? Смотри, чтобы сделать контейнер "двусвязный список" необходимо начать именно с него:
|
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
bsa, Вы не ошиблись ![]() http://liveworkspace.org/code/c09bdc38197e...616db8f9674e562 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
ой.
что-то я не сообразил, что шаблонный параметр является названием класса. Мне такое и в голову не могло придти. гы. гы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |