1

QtPluginに深刻な問題があります。辞書という名前のインターフェイスからプラグインを作成しようとしています。

class dictionary
{
private:
   ... some private members
public:
   ~dictionary();

   ... some no virtual methods

   virtual void collectData()=0;
   virtual void collectOperator()=0;
   virtual void collectControl()=0;
};

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(CDictionnary, "shinoe.cameleon.dictionary/2.0")
QT_END_NAMESPACE

私は、blankdictionaryプロジェクトでこのように宣言されたblankdictionaryクラス(blankdictionary.h)に辞書を実装しました。

プロフィール:

!include(../../../configuration.pri)

QT       += core gui

TARGET = blanktarget
TEMPLATE = lib
CONFIG += plugin

#dictionary interface includes
!include(../../../machine/kernel/includekernel.pri)

SOURCES += blankdictionary.cpp
HEADERS += blankdictionary.h

blankdictionary.hファイル:

class blankdictionary : public dictionary {
   Q_OBJECT
   Q_INTERFACES(dictionary)
public:
   blankdictionary();
   void collectData();
   void collectOperator();
   void collectControl();
};

私のblankdictionary.cppファイルの最後に私は持っています:

QT_BEGIN_NAMESPACE
Q_EXPORT_PLUGIN2(blanktarget, blankdictionary)
QT_END_NAMESPACE

コンパイル時に、次のエラーが返されます。

blankdictionary.cpp: In function 'QObject* qt_plugin_instance()':
blankdictionary.cpp:20: error: no match for 'operator=' in '_instance = (operator new(44u), (<statement>, ((blankdictionary*)<anonymous>)))'
c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qpointer.h:65: note: candidates are: QPointer<T>& QPointer<T>::operator=(const QPointer<T>&) [with T = QObject]
c:\QtSDK\Desktop\Qt\4.7.4\mingw\include/QtCore/qpointer.h:67: note:                 QPointer<T>& QPointer<T>::operator=(T*) [with T = QObject]

何か案が?

前もって感謝します !

4

1 に答える 1

2

もう1つの問題(コメントで言及した問題と同様)はQ_OBJECT、クラスでマクロを宣言しましたblankdictionaryが、から派生させていないことQObjectです。

于 2012-05-08T12:19:11.803 に答える