我有一个名为 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_;
}
这个代码是可以运行的,但我不明白为什么。
这些静态变量为什么需要定义两次?或者说我并没有定义它们而是在初始化?但是为什么需要这样做呢?或者我应该用不同的方式编写我的类?