3
我想將我的Class聲明爲Metatype for Qt,但找出了一些問題。看起來,在MetaType聲明之後,他想要訪問拷貝構造函數,或者像我想象的那樣顯式地不允許QObject使用。
這是我的頭:在Qt中聲明Metatype的問題
#include <QtCore/QObject>
#include <QtCore/QMetaType>
class Message : private QObject
{
Q_OBJECT
public:
Message();
int sourceId;
int targetId;
private:
Q_DISABLE_COPY(Message)
};
Q_DECLARE_METATYPE(Message)
Q_DECLARE_METATYPE(Message*)
Message::Message() :
QObject()
{
}
所以,我收到以下錯誤:
消息::消息:無法訪問 私有成員類 消息宣佈見參考作用 模板實例'void * qMetaTypeConstructHelper(const T *)'正在編譯
和還有一些,但我認爲它們幾乎是一樣的,因爲同樣的問題。
有人知道我在做什麼錯了嗎?
你好,我試着繼承公共QObject。如果我刪除了Q_DECLARE_METATYPE(消息)並僅聲明指針,還有另一個問題:qt_metatype_id:不是QMetaTypeId的成員,請參閱參考函數模板實例化'int qMetaTypeId(T *)'正在編譯 - 因爲我正在使用:scriptInterpreter.setDefaultPrototype(qMetaTypeId (),this-> qs_msg_prototype); –
Tobias
2010-09-16 08:27:26
也可以爲不繼承QObject的類聲明一個元類型?因爲如果我試圖這樣做,我得到staticMetaObject不能在我的元類型類中找到的錯誤.. – Tobias 2010-09-16 11:24:38
是的,它是(例如聲明指針的元類型)。 – 2010-09-16 11:30:26