c ++ / qt如何拥有全局静态变量

时间:2018-10-13 14:17:59

标签: c++ qt

我想存储一些值/变量,以便可以在任何类中进行更改和读取。

到目前为止我尝试过的是: 我创建了一个名为“ settings.h”的头文件:

#ifndef SETTINGS_H
#define SETTINGS_H

#include <QString>

class Settings {
public:
    static QString OutputFormat;
};

#endif // SETTINGS_H

现在,我将其包含在以下课程中:

#include "settings.h"

但是当我尝试设置此变量时:

Settings::OutputFormat = "mp3";

它不会与该错误一起编译:

undefined reference to `Settings::OutputFormat'

该怎么办? 我需要类似设置类的东西。任何班级     #include“ settings.h” 应该能够读取并更改变量值。这些值应该是全局值,并且应在包括该设置类的所有类之间共享。

1 个答案:

答案 0 :(得分:2)

您需要在某个位置的cpp文件中为此变量声明一个“位置”:

QString Settings ::OutputFormat;

这就足够了。在源文件中没有“位置”的情况下,编译器将不会创建变量,并且它将是未定义的引用。