gpt4 book ai didi

c++ - cpp中的构造函数无限循环

转载 作者:行者123 更新时间:2023-11-30 01:05:14 26 4
gpt4 key购买 nike

我有一个 Logger 单例类,它的目的是将消息打印到日志文件/屏幕。这个 Logger 有一些他想从配置文件中读取的配置。这是 Logger 的构造函数:

Logger::Logger(const std::string& confFilePath) {
m_logConf = new LogConfig(confFilePath);
...
}

LogConfig 使用知道如何解析配置文件的配置对象。这是 Ctor 类:

LogConfig::LogConfig(const std::string& confFilePath) {
m_config = new Configuration(confFilePath);
...
m_config->ParseConfFile();
}

问题是在 ParseConfFile 方法中 - 配置对象可能想要写入日志并使用 Logger 单例类。但是,当它尝试这样做时 - 他将再次进入 Logger 构造函数,然后进入 LogConfig Ctor 并且存在无限循环。

我不想禁止配置类写入日志(LogConfig 不是唯一使用它的类)。

如何解决这个循环问题?

最佳答案

用最低限度初始化记录器,这样你根本不需要配置。然后当你有配置时替换记录器。

如果配置读取器需要记录任何内容,它将转到最低限度的记录器,因此您至少应该将其转储到标准错误。

此外,如果您处于多线程环境中,请确保使用 shared_ptr 并进行原子交换以将其替换为正确的(以防其他模块在您需要交换时记录日志)。

关于c++ - cpp中的构造函数无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48927570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com