У меня есть этот простой «интерфейс» для некоторых плагинов, которые я хочу разработать, он выглядит так:
class TestPluginBase : public QObject
{
Q_OBJECT
public:
TestPluginBase();
qint64 returnType(){return PluginType;}
protected:
qint64 PluginType;
};
И некоторые другие классы, которые реализуют «интерфейс», например:
class TestPluginONE : public TestPluginBase
{
public:
TestPluginONE() {this->PluginType =1;}
qint64 returnType() {return this->PluginType;}
};
Тогда у меня есть другая функция, которая предполагает загрузку различных плагинов:
qint64 TestPluginManager::loadPlugin(QObject *_plugin)
{
TestPluginBase *Plugin = qobject_cast<TestPluginBase *>(_plugin);
if ( !Plugin )
return 0;
emit sigPluginLoaded(Plugin);
return Plugin->returnType();
}
Но при его создании я получаю void value not ignored as it ought to be
и создатель Qt говорит, что был создан из строки, в которой я выполняю актерский состав … не могу понять, что я делаю неправильно … любая помощь / подсказка приветствуется.
изменил конструктор в моем «интерфейсе», чтобы TestPluginBase() {this->PluginType =0;}
и код компилируется без ошибок .. решил мою проблему, но не знаю почему.
Других решений пока нет …