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

 
 
> Проблема с шаблонном класса с наследованием., Ошибка линкера
kurtis
сообщение Nov 14 2008, 17:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Здравствуйте! smile.gif
Возникла небольшая проблем с наследованием и шаблоном.
Использую WinAVR версии 20080610.
Есть базовый класс
Код
//Файл TechObj.h
class TechObj
{
    private:
        //...
    public:
        //...
        virtual void drv( ) = 0;
        virtual void show_lcd( ) = 0;
        virtual void show_mnem( ) = 0;
        //...
        TechObj( ) {};
        virtual ~TechObj() {};
};

есть производный класс, с шаблоном (описан в отдельном файле, куда подключается заголовок с базовым классом)
Код
//Файл Dev_vzk.h
#include <TechObj.h>
//...
template < uint8_t NumOfClapans >
class VZK: public TechObj
{
    private:
        uint8_t someFoo[NumOfClapans ];
    public:
        //...
        void drv();
        void show_mnem();
        void show_lcd();
        //...
        VZK( ... ) { ... };
        virtual ~VZK() {};
};

методы класса VZK описаны следующим образом
Код
//Файл Dev_vzk.cpp
#include <Dev_vzk.h>
//...
template < uint8_t NumOfClapans >
void VZK<NumOfClapans>::drv()
{
    //...
}

далее, в отдельном файле объявляется объект класса VZK (файл Devs.cpp)
Код
VZK <2> KV71 ( ... );

Всю эту чудо-писанину компилятор с удовольствием переваривает, но линкер говорит свое категорическое "Error 1"
Цитата
obj/Devs.o:(.rodata._ZTV3VZKILh2EE+0x4): undefined reference to `VZK<(unsigned char)2>::drv()'
obj/Devs.o:(.rodata._ZTV3VZKILh2EE+0x6): undefined reference to `VZK<(unsigned char)2>::show_lcd()'
obj/Devs.o:(.rodata._ZTV3VZKILh2EE+0x8): undefined reference to `VZK<(unsigned char)2>::show_mnem()'
make.exe: *** [exe/Project.elf] Error 1

Если убрать описание шаблона, то проект собирается без ошибок.
В каком месте я допустил ошибку?
Заранее спасибо за помощь!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 00:47
Рейтинг@Mail.ru


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