1

Qt DBus ライブラリを使用して、複数のインターフェイスを実装するオブジェクトを登録するのに苦労しています。

<node> 
  <interface name="x.I1"> <method name="foo"/> </interface>
  <interface name="x.I2"> <method name="bar"/> </interface>
</node>

C++ 多重継承を使用して両方のインターフェイスを実装しています。

class Impl : public x.I1, public x.I2 {
public:
   void foo(){}
   void bar(){}
};

このqdbusxml2cppツールDBusAdaptorは各インターフェイスに対して を生成しますがQDBusConnection、インターフェイスの実装者をそのオブジェクトに追加するメソッドがありません。

そして、このオブジェクトを DBus サービスに公開したいと考えています。

QDBusConnection conn=QDBusConnection::sessionBus();
conn.registerObject("/obj",new DBusAdaptor????(&myObject) );

これを実現するには、独自のアダプターを実装する必要がありますか?

4

2 に答える 2

2

2つのQDBusAbstractAdaptorクラスから継承することはできません。これは、それら自体QObjectが多重継承をサポートしていないクラスと、QtDBusアダプターのドキュメントから継承するためです。

クラスには、エクスポートするインターフェイスを宣言する「D-Busインターフェイス」という名前のQ_CLASSINFOエントリも1つ含まれている必要があります。クラスごとに1つのエントリのみがサポートされます。

したがって、複数のインターフェースをサポートするアダプターを自分で実装することはできません。

于 2012-03-19T11:13:33.487 に答える