0

開発したいいくつかのプラグイン用のこの単純な「インターフェース」があります。次のようになります。

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 作成者は、キャストを実行している行からインスタンス化されていると言います...何が間違っているのかわかりません...ヘルプ/ヒントは大歓迎です。

4

1 に答える 1

0

「インターフェイス」のコンストラクターをに変更しTestPluginBase() {this->PluginType =0;}、コードはエラーなしでコンパイルされます..問題は解決しましたが、理由はわかりません。

于 2013-01-01T11:04:50.963 に答える