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