Проблема с объявлением метатипа в Qt - PullRequest
3 голосов
/ 16 сентября 2010

Я пытаюсь объявить свой класс метатипом для Qt, но выясняю некоторые проблемы.Кажется, что после объявления MetaType он хочет получить доступ к конструктору копирования или к чему-то в этом роде, что явно не разрешено для объектов QObject, как я думал.
Это мой заголовок:

#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: не может получить доступ к закрытому члену, объявленному в классе.1009 *

и еще немного, но я думаю, что они почти одинаковы и из-за одной и той же проблемы.
Кто-то знает, что я делаю неправильно?

1 Ответ

4 голосов
/ 16 сентября 2010

Вы должны публично наследовать от QObject:

class Message : public QObject

При этом вам не нужно объявлять метатип для класса Message.Только для указателя.

...