首页 > 解决方案 > 静态变量的范围到几个文件 C++

问题描述

我知道静态变量的范围和生命周期是互联网上广泛记录的话题。但是,我不知道该怎么做。

我有一个命名空间Logger来记录我的程序。此记录器有一个静态变量static bool verboseMode,用于确定是否应生成日志消息和文件。

记录器.h

namespace Logger
{
    static bool verboseMode;
    inline void printlog(const std::string_view message) {
        if(verboseMode) 
            std::cerr << message << std::endl;
    }
}

现在我想在我的程序中的任何地方使用记录器,但verboseMode只有在设置他的文件中才有正确的值。

例如,如果我有一个这样main.cpp的类MyClass

主文件

int main(int ac, char* av[]) {
    MyClass myclass;
    Logger::verboseMode = true;
    Logger::printlog("Log from main");
    myclass.test("Log from MyClass");
}

我的类.h

class MyClass {
public:
    void test(const std::string_view message){
        Logger::printlog(message);
    }
};

这里"Log from main"生成了消息,但没有生成"Log from MyClass"消息。

我听说对于像记录器这样的服务,您不应该创建一个类,因为记录器并不是真正的对象。所以你必须使用命名空间。
但是现在我怎样才能在任何地方使用我的记录器,但在我的程序开始时只配置一次呢?

标签: c++loggingstatic

解决方案


推荐阅读