реклама на сайте
подробности

 
 
> шаблоны С++, возникла проблема...
Legotron
сообщение Apr 28 2007, 13:36
Сообщение #1


инопланетянин
***

Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832



Добрый день!

Помогите разобраться в чем ошибка?
Код следующий...

Код
template <class T>
class A {

public:

void Func();

};

template <class T>
void A<T>::Func()
{
}

void TestTemplate(void)
{
A<int> AObj;        // Создаем объект тип А для int
AObj.Func();        // Эта строка приводит к ошибке линкера  (исправил было A вместо AObj) :)
}


Этот код компилирутся без ошибок.
Ошибка возникает на этапе ликовки...

Код
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  Func__12SAS__tm__2_cFv_v
    MODULE:  EMF.obj (EMF)
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  Func__12SAS__tm__2_cFv_v
    MODULE:  EMF.obj (EMF)
    ADDRESS: 16E8H
Target not created


Какие есть соображения по этому поводу?

Сообщение отредактировал Legotron - Apr 28 2007, 14:05
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
forever failure
сообщение Apr 29 2007, 06:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Самое простое и правильное в этом случае решение - перенести весь код, функций-членов шаблона класса из .cpp в заголовочный файл .h.

Более подробно почему и отчего так можно узнать например здесь
Go to the top of the page
 
+Quote Post
Legotron
сообщение Apr 29 2007, 16:04
Сообщение #3


инопланетянин
***

Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832



Большое спасибо за помощь! smile.gif
Сейчас проверить к сож. не могу. sad.gif После праздников попробую сделать как вы сказали.

P.S.
Цитата(forever failure @ Apr 29 2007, 07:45) *
Самое простое и правильное в этом случае решение - перенести весь код, функций-членов шаблона класса из .cpp в заголовочный файл .h.

При этом ф-ции описывать внутри класса? или просто в 1 модуле *.h?

Если внутри класса, то это неудобно.
Если в 1 модуле, тогда почему у меня не проходила ошибка, когда я описание класса помещал в .Cpp файл, где и ф-ции?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 19:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016