Есть у меня класс, типа шаблон, который наследуется несколькими другими классами. все методы этого класса виртуальные, конструктор и деструктор - пустышки. Наследники переопределяют виртуальные методы. Кроме того классы-наследники положены в библиотеку. Далее имею следующее, когда я собираю программу в месте с этой библиотекой линковщик говорит что не найдены конструктор и деструктор этого родительского класса.
Класс примерно такой
class IoDev
{
public:
IoDev() {}
virtual ~IoDev() {}
virtual void sendValue(int i) {}
virtual int getValue() {}
};
Есть только заголовок, срр-файла нет для этого класса хотя если его даже сделать и в нем написать реализации методов - ничего не меняется.
Пример класса наследника
class NetIoDev: public QObject, public IoDev
{
Q_OBJECT
public:
NetIoDev();
~NetIoDev();
viod sendValue(int i);
int getValue();
// и так далее
};
о-файл этого класса в библиотеке присутствует.
а далее, когда я собираю программу и линкую ее с этой библиотекой (напомню, библиотека статическая) то вижу такую ошибку
g++ -o test2 build/main.o build/mainw.o build/moc_mainw.o -L../ -L/usr/lib -lrcada_client -lQtSql -lQtGui -lQtNetwork -lQtCore -lpthread
..//librcada_client.a(netiodev.o): In function `NetIoDev':
/home/vanessa/src/QT4/src/lib/ionetclient/netiodev.cpp:7: undefined reference to `IoDev::IoDev()'
/home/vanessa/src/QT4/src/lib/ionetclient/netiodev.cpp:7: undefined reference to `IoDev::IoDev()'
..//librcada_client.a(netiodev.o): In function `~NetIoDev':
/home/vanessa/src/QT4/src/lib/ionetclient/netiodev.cpp:16: undefined reference to `IoDev::~IoDev()'
/home/vanessa/src/QT4/src/lib/ionetclient/netiodev.cpp:16: undefined reference to `IoDev::~IoDev()'
/home/vanessa/src/QT4/src/lib/ionetclient/netiodev.cpp:16: undefined reference to `IoDev::~IoDev()'
..//librcada_client.a(netiodev.o):(.data.rel.ro._ZTI8NetIoDev[typeinfo for NetIoDev]+0x18): undefined reference to `typeinfo for IoDev'
В строке 7 файла netiodev.cpp начинается конструктор класса NetIoDev в строке 16 - деструктор
Каr это исправить ?