我正在尝试将我的类声明为Qt的元类型,但要解决一些问题。似乎在MetaType声明之后,他希望能够访问复制构造函数或类似的东西,这是我认为的QObjects明确不允许的。
这是我的标题:
#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()
{
}
所以,我收到以下错误:
Message :: Message:无法访问 私人成员在课堂上宣布 消息参见函数参考 模板实例化'无效 * qMetaTypeConstructHelper(const T *)'正在编译
还有一些,但我认为它们几乎相同,因为同样的问题 有人知道我做错了什么吗?
答案 0 :(得分:4)
你必须公开继承QObject:
class Message : public QObject
通过这样做,您不需要为类Message声明元类型。仅适用于指针。