【发布时间】:2011-10-21 12:22:24
【问题描述】:
我有一个名为 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_;
}
这行得通,但我不明白为什么。
为什么这些静态变量需要定义两次?或者也许我没有定义它们而是初始化它们?但是为什么还需要这样做呢?或者我应该以不同的方式写我的课程?
【问题讨论】:
标签: c++ class variables static