Реализую передачу в плагине стороннего класса. Интерфейс:
class TaskInterface
{
public:
virtual ~TaskInterface() {}
virtual TestA* factory() const = 0;
};
Плагин:
class Plugin : public QObject, TaskInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "com.R.TaskInterface/1.0" FILE "plugin.json")
Q_INTERFACES(TaskInterface)
public:
TestA* factory() const
{
return new TestA;
}
};
Все работает, плагин грузится.
Теперь мне нужно переопределить класс TestA в плагине. Для теста создал класс TestB, который наследуется от TestA. В TestB ничего не менял и не добавлял. Приинклюдил в хедеру плагина, и больше ничего в хедере не менял:
#include "testb.h"
class Plugin : public QObject, TaskInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "com.R.TaskInterface/1.0" FILE "plugin.json")
Q_INTERFACES(TaskInterface)
public:
TestA* factory() const
{
return new TestA;
}
};
Плагин не грузится ... с ошибкой "undefined symbol: _ZN5TestA16staticMetaObjectE)". В идеале я хочу в методе TestA* factory() const
создать экземпляр класса TestB и передать его, но даже его обьявление не работает. WFT?