У меня есть заголовок filepaths.h , который определяет ряд статических переменных:
#ifndef FILEPATHS_H
#define FILEPATHS_H
class FilePaths {
public:
static QString dataFolder();
static QString profileFolder();
private:
static QString dataFolder_;
static QString profileFolder_;
};
}
#endif // FILEPATHS_H
И у меня есть связанный filepaths.cpp , который изначальноВыглядело это так:
#include "FilePaths.h"
QString FilePaths::dataFolder() {
return dataFolder_;
}
QString FilePaths::profileFolder() {
return profileFolder_;
}
Однако это не сработало - я получил ошибку компоновщика «неразрешенная ошибка символа» для всех статических переменных.Поэтому я добавил эти переменные в файл C ++ следующим образом:
#include "FilePaths.h"
QString FilePaths::dataFolder_ = "";
QString FilePaths::profileFolder_ = "";
QString FilePaths::dataFolder() {
return dataFolder_;
}
QString FilePaths::profileFolder() {
return profileFolder_;
}
И это работает, однако я не понимаю, почему.
Почему эти статические переменные должны бытьопределяется дважды?Или я не определяю их, а инициализируюНо все же зачем это нужно делать?Или я должен написать свой класс по-другому?