J'essaie de déclarer ma classe comme métatype pour Qt mais je cherche à résoudre certains problèmes. Il semble que, après la déclaration MetaType, il veut avoir accès à un constructeur de copie ou quelque chose comme ça qui n'est explicitement pas autorisé pour QObjects comme je le pensais.
Ceci est mon en-tête:Problème avec la déclaration de métatype dans Qt
#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()
{
}
Alors, je reçois les erreurs suivantes:
message :: Message: ne peut pas accéder parlementaire déclarés dans la classe message voir référence à la fonction modèle instanciation 'vide * qMetaTypeConstructHelper (const T *)' en cours de compilation
et un peu plus, mais je pense qu'ils sont presque les mêmes et à cause du même problème. Quelqu'un sait ce que je fais mal?
Bonjour, j'ai essayé d'hériter de QObject public. Si je supprime le Q_DECLARE_METATYPE (Message) et ne déclare que le pointeur, il y a un autre problème: qt_metatype_id: n'est pas un membre de QMetaTypeId, voir la référence à l'instanciation du modèle de fonction 'int qMetaTypeId (T *)' en cours de compilation utilise: scriptInterpreter.setDefaultPrototype (qMetaTypeId (), this-> qs_msg_prototype); –
Tobias
Est-il également possible de déclarer un métatype pour une classe qui n'hérite pas de QObject? Parce que si j'essaye de faire cela, j'obtiens l'erreur que le staticMetaObject ne peut pas être trouvé dans ma classe de méta-type .. – Tobias
Oui, c'est (par exemple déclarant des méta-types pour des pointeurs). –