c++ - 静态变量的范围到几个文件 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"
消息。
我听说对于像记录器这样的服务,您不应该创建一个类,因为记录器并不是真正的对象。所以你必须使用命名空间。
但是现在我怎样才能在任何地方使用我的记录器,但在我的程序开始时只配置一次呢?
解决方案
推荐阅读
- magento2 - 如何通过 XML 代码或其他方式重新排列 magento 2 页面块 div?
- c# - 如何实现对内存数据的事务性操作
- java - 在 GraphQL-SPQR 中返回错误的正确方法
- knockout.js - 如何在 html 上显示这个 Knockout observable?
- c - 我正在尝试将压缩的 rtp 数据包解码为 evs 并将其转换为 wav 文件
- kubernetes - 对于以下示例,.rego 中的 opa 策略是什么?
- c# - 如何访问属于不同命名空间的相同方法名
- triggers - 我可以在主标签下的触发器中添加 2 个不同的按钮类并在我的 GA 中获取正确的数据吗?
- reactjs - 在反应中没有获得参考的焦点
- cloud - CloudFlare Orange Cloud // 扩展