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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка с шаблоном класса, Undefined reference 
:(
    Опции темы
Graf Zeppelin
Дата 23.5.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Впервые реши применить шаблоны, и столкнулся со странной проблемой.
Есть три файла
test.cpp
Код
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>

#include "tmp.h"

using namespace std;

int main(int argc, char *argv[]) {
    class tmp<char> lol;
  cout << "Hello, world!" << endl;

  return EXIT_SUCCESS;
}

tmp.h
Код
#ifndef TMP_H
#define TMP_H

/**
    @author Darth Vader,,, <darth@STATION>
*/
template<class T> class tmp{
public:
    tmp();
    ~tmp();
};

#endif

tmp.cpp
Код
#include "tmp.h"

template<class T> tmp<T>::tmp() {
}
template<class T> tmp<T>::~tmp() {
}


При сборке выдаёт ошибки
test.o: In function `main':/home/darth/Projects/test/src/test.cpp:13: undefined reference to 'tmp<char>::tmp()'
:/home/darth/Projects/test/src/test.cpp:16: undefined reference to `tmp<char>::~tmp()'
:/home/darth/Projects/test/src/test.cpp:16: undefined reference to `tmp<char>::~tmp()'


--------------------
Jah, help me!
PM MAIL   Вверх
Anikmar
Дата 23.5.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Перенесите все из tmp.cpp в tmp.h
Шаблоны воспринимаются только когда реализация их подключена #include

Можно попробовать включить #include <tmp.cpp>, я так не пробовал - может и сработает
PM MAIL ICQ   Вверх
88andrey
Дата 23.5.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



описание класса с шаблономи должно находится в томже файлв где и класс
PM MAIL   Вверх
Daevaorn
Дата 23.5.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Graf Zeppelin @  23.5.2007,  09:44 Найти цитируемый пост)
tmp.cpp

код шаблона должен быть в *.h/*.hpp файле
PM MAIL WWW   Вверх
Graf Zeppelin
Дата 23.5.2007, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, это решило проблему.
--------------------
Jah, help me!
PM MAIL   Вверх
MAKCim
Дата 23.5.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



надоели эти темы, честное слово  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
korbian
Дата 23.5.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ищи информацию о модели включения и модели разделения при применении шаблонов.
есть хорошая книга:
Цитата

"ШАБЛОНЫ С++. Справочник разработчика" Девид Вандервурд, Николай Джосаттис.

Увы, электронный вариант я не встречал. 
ЗЫ: если где надешь электронный вариант, отпиши.


--------------------
korbian ©
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0680 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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