【问题标题】:expected constructor, destructor, or type conversion before ';' token (Q_DECLARE_METATYPE_CONTACT)';' 之前的预期构造函数、析构函数或类型转换令牌(Q_DECLARE_METATYPE_CONTACT)
【发布时间】:2016-07-05 21:05:58
【问题描述】:

所以我已经用 Qt creator (C++11) 定义了这个类:

#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

但我收到此错误: ';' 之前的预期构造函数、析构函数或类型转换令牌 Q_DECLARE_METATYPE(联系方式);

感谢您的帮助和建议。

【问题讨论】:

    标签: c++ qt qt-creator declare metatype


    【解决方案1】:

    您需要#include &lt;QMetaType&gt;,因为它定义了Q_DECLARE_METATYPE 宏。即使你这样做了,Contact 类也不能像这样使用,因为它至少有一个纯虚函数 (getnom())。从Qt's documentation 中并不清楚,但是如果您想将其声明为元类型并且该类具有纯虚函数,则该类需要可实例化。

    【讨论】:

      【解决方案2】:

      去掉Q_DECLARE_METATYPE(Contact);末尾的分号。

      【讨论】:

      • 我这样做了,但我得到了这个错误;预期的构造函数、析构函数或在“联系”之前的类型转换
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2010-12-12
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多