Russian Qt Forum

Программирование => С/C++ => Тема начата: andi от Марта 28, 2007, 11:26



Название: Наследование от шаблонного класса.
Отправлено: andi от Марта 28, 2007, 11:26
Порыскал по разным книжкам, но не нашел такой фичи.
Допустим собрали шаблонный класс:
Код:

template <class PType>
class TParentList // шаблон класса списка указателей
{
public:
TParentList();
~TParentList();
virtual PType getItemId(int );
private:
QValueList<PType> List;
QValueListIterator<PType> it;
PType item;
virtual void addElement(const QString&);
};


Можно ли каким-либо образом сделать наследника этого шаблона (можно после конкретизации) и еще одно класса (не шаблонного).
Что-то вроде:
Код:

typedef TParentList<THard*> TPHardList;
typedef TParentList<TSoft*> TPSoftList;

class TGHList : public TPHardList , public TParent
{
};

class TGSList : public TPSoftList , public TParent
{
};



На данном момент, все компилируется, но не линкуется.
Ругается на отсутствие экземпляров:
undefined reference to `TParentList<TSoft*>::TParentList()'
итд по всем остальным функциям.

Все методы TParentList существуют (правда в виде шаблонов).

Допускаю ошибки в синтаксисе, но где и в чем... пока не понятно.
Возможно вообще так нельзя делать.


Название: Наследование от шаблонного класса.
Отправлено: Вудруф от Марта 28, 2007, 13:13
Код:
template <class T> TGHList : public TParentList <T>, public TParent
{
...
};


Название: Наследование от шаблонного класса.
Отправлено: Daemon от Апреля 18, 2007, 14:57
В синтаксисе все верно. Я надеюсь твой шаблонный класс в .h файле находится?