Статический класс qt

205
15 декабря 2016, 16:03

Создаю класс, в нем есть 2 метода и статические свойства для хранения данных.
Задача: имеется 2 класса, один из них изменяет значения статического класса, а второй считывает.

Подключаю его:

#include <userdata.h>

Статические класс:

class UserData {
public:
    static QString TOKEN;
    static QString UID;
    static void setToken ( QString token );
    static void setUID ( QString uid );
    struct MusicData {
        QString title;
        QString url;
        int id;
    };
    static int COUNT;
    struct Music {
        MusicData *n = new MusicData[COUNT];
    };
    static Music musicList; };

При обращении к его свойству UserData::musicList.n[i].id = i; пишет ошибку:

error: undefined reference to `UserData::musicList'

Так же при описании методов

static void UserData::setToken ( QString token ) {
  TOKEN = token;
}
static void UserData::setUID(QString uid) {
    UID = uid;
}

тоже пишет ошибку:

error: cannot declare member function 'static void UserData::setToken(QString)' to have static linkage [-fpermissive]
static void UserData::setToken ( QString token ) {

P.S. Не бейте. ) ^

Answer 1

Сделайте класс синглтоном, решите сразу все проблемы=)

нашел проблему) в UserData.cpp добавьте

UserData::Music UserData::musicList;
int UserData::COUNT;

Статические члены класса надо описывать еще и в .cpp файле.

READ ALSO
Как построить график любой функции?

Как построить график любой функции?

Данная математическая функция(любая), программа должна сама решить её и построить его графикКак решить подобную задачу

198
Шестнадцатеричные числа в Си

Шестнадцатеричные числа в Си

Передо мной стоит задача реализовать алгоритм SEAL20

164
Создание формы на основе main.cpp в Qt Creator

Создание формы на основе main.cpp в Qt Creator

Есть код в maincpp, который описывает форму программы

192
Возврат значений из функции

Возврат значений из функции

Скажите, пожалуйста, есть ли какая-то видимая разница в работе 2-х функций?

167