2016-03-18 21 views
1

yüzden QT yaratıcısı (C++ 11) sınıfı tanımladık:beklenen kurucu, yıkıcı veya tür dönüşümünü ';' önce belirteci (Q_DECLARE_METATYPE_CONTACT)

#ifndef CONTACT_H 
#define CONTACT_H 

#include <QStringList> 
#include <list> 

class Contact 
{ 
public : 
    Contact(); 
    ~Contact(); // destructeur 

    Contact(const Contact & contact); // constructeur de copie 
    Contact& operator=(const Contact& c); //opérateur de copie 

    Contact(Contact && c); // constructeur de déplacement 
    Contact& operator=(Contact&& c); // opérateur de déplacement 

    QString obtAdresse() const; 
    void changeAdresse(QString adresse); 

    QString obtFacebook() const; 
    void changeFacebook(QString facebook); 


    QString obtTwitter() const; 
    void changeTwitter(QString twitter); 

    QString obtNote() const; 
    void changeNote(QString note); 

    virtual QString getnom() = 0; 

    void reinitialise(); 

protected : 
    QString adresse; 
    QString facebook; 
    QString twitter; 
    QString note; 

}; 

Q_DECLARE_METATYPE(Contact); 

#endif // CONTACT_H 

Ancak bu hata olsun: önce beklenen yapıcı, yıkıcı veya tip dönüşüm ';' belirteci Q_DECLARE_METATYPE (İletişim);

Yardımlarınız ve önerileriniz için teşekkür ederiz.

cevap

0

Noktalı virgülü, Q_DECLARE_METATYPE(Contact); sonundan kaldırın.

+0

Bunu yaptım ama bu hatayı aldım, beklenen kurucu, yıkıcı veya 'Kontak' öncesi tip dönüşümü – Mangemouton

1

#include <QMetaType> gerekir, çünkü bu, Q_DECLARE_METATYPE makrosunu tanımlar. Bunu yapsanız bile, Contact sınıfı bunun gibi kullanılamaz çünkü en az bir salt sanal işlevi vardır (getnom()). Bu tam olarak Qt's documentation'dan net değildir, ancak bir meta türü olarak bildirmek istiyorsanız ve sınıfın salt bir sanal işlevi varsa, sınıfın somutlaştırılabilmesi gerekir, bu somut örnek değildir.

İlgili konular