Pregunta

He mejor jugador, con la biblioteca qjson y ha obtenido un error "referencia indefinida". Este es el código:

#include <qjson/qobjecthelper.h>
#include <qjson/serializer.h>

class Person: public QObject {

    Q_OBJECT

    Q_PROPERTY(QString name READ name WRITE setName)
    Q_PROPERTY(Gender gender READ gender WRITE setGender)
    Q_ENUMS(Gender)

public:
    Person(QObject *parent = 0);
    ~Person();

    QString name() const;
    void setName(const QString &name);

    enum Gender{Male, Female};
    Gender gender() const;
    void setGender(Gender gender);

private:
    QString m_name;
    Gender m_gender;

};

int main ()
{

    Person person;

    QJson::Serializer serializer;

    person.setName("Nick");
    person.setGender(Person::Male);
    QVariantMap person_map = QJson::QObjectHelper::qobject2qvariant(&person);

    QByteArray json = serializer.serialize(person_map);
    return 0;
}

Por lo tanto, el compilador dice que undefined reference to Person::Person y todas las demás funciones en persona clase. ¿Por qué?

¿Fue útil?

Solución

sólo tiene declarada los métodos de la clase. También es necesario definir (es decir implemento) ellos. Por el momento, ¿cómo debería el compilador saber el constructor de Person se supone que debe hacer?

Otros consejos

necesidad de vincular con la biblioteca o un objeto archivo que implementa la clase Person.

Si usted tiene un archivo libqjson.a en una variante de Unix, es necesario añadir -lqjson a la línea de comando de enlace. Si estás en Windows con qjson.lib, es necesario vínculo con qjson.lib. Si usted tiene un archivo .cpp que implementa persona, que necesita para su recopilación y la vinculan con su ejecutable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top