crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> template, linux, qt, Особенность использования шаблонов
fantom
  опции профиля:
сообщение 5.2.2009, 19:18
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Пишу простенький пример
test.h
template<typename T>
class Test{
public:
Test();
};


test.cpp

#include "test.h"
template <typename T>
Test<T>::Test()
{

}

main.cpp
int main(int argc, char *argv[]){
QApplication app(argc, argv);
    Test<int> test;
return app.exec();
}


Вываливается ошибка main.cpp:112: undefined reference to `Test<int>::Test()'
Причем если я убираю cpp файл, а описываю реализацию методов в h файле все нормально.
В чем дело?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
fantom
  опции профиля:
сообщение 6.2.2009, 13:17
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


А эта проблема впринципе решается? Или мне всю реализацию шаблонных классов в h файле описывать?

Сам отвечаю на свой вопрос. Нашел в другом форуме.Решение называется external template. К сожалению, эта часть стандарта не реализована С++ большинством компиляторов, по этому так писать не принято. Полное описание проблемы и её решения на английском языке Вы можете прочесть тут - http://www.codeguru.com/forum/showthread.php?t=250284

Видимо придется писать все в h файле.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 14:00