2013-01-01 119 views
0

我有一些插件我想开发这个简单的“接口”,它看起来像:“不被忽略,因为它应该是空值” - 的Qt/C++

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的创造者说,从我正在做我的演员阵容实例...不知道我在做什么错...任何帮助/提示表示赞赏。

+0

定义了sigPluginLoaded? – 2013-01-01 10:53:57

+0

与'loadPlugin'函数被定义的头文件相同。即使我将它评论出来,我也会得到同样的错误。 – mrz

回答

0

在我的“接口”中将构造函数修改为TestPluginBase() {this->PluginType =0;},代码编译时没有错误。解决了我的问题,但不知道为什么。

+1

您可以通过回到以前的代码来重现问题吗? – alexisdm

+0

足够奇怪现在当我编译以前的代码时,我得到了很多'TestPluginONE.cpp:-1:error:未定义的引用TestPluginBase :: TestPluginBase()'' – mrz

相关问题