在Qt中声明元类型的问题

时间:2010-09-16 07:19:11

标签: c++ qt metaprogramming

我正在尝试将我的类声明为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 *)'正在编译

还有一些,但我认为它们几乎相同,因为同样的问题 有人知道我做错了什么吗?

1 个答案:

答案 0 :(得分:4)

你必须公开继承QObject:

class Message : public QObject

通过这样做,您不需要为类Message声明元类型。仅适用于指针。