【问题标题】:"void value not ignored as it ought to be" - Qt/C++“不应忽略的无效值”-Qt/C++
【发布时间】:2013-01-01 10:47:15
【问题描述】:

我有一些我想开发的插件的简单“接口”,它看起来像:

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 创建者说从我正在做我的演员的行中实例化......无法弄清楚我做错了什么......任何帮助/提示表示赞赏。

【问题讨论】:

  • sigPluginLoaded 定义在哪里?
  • 在定义loadPlugin函数的同一个头文件中。即使我把它注释掉,我也会得到同样的错误。

标签: c++ qt casting void


【解决方案1】:

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

【讨论】:

  • 回到之前的代码能重现问题吗?
  • 很奇怪现在当我编译之前的代码时,我得到了很多TestPluginONE.cpp:-1: error: undefined reference to TestPluginBase::TestPluginBase()'
猜你喜欢
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2011-11-10
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
相关资源
最近更新 更多