gpt4 book ai didi

c++ - 如何让信息记录更简单?

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:43 25 4
gpt4 key购买 nike

我正在开发一个 GUI 应用程序。我有一个主窗口。主窗口有一个信息窗口,用于记录当前操作的一些基本信息,如正在做什么,需要多长时间。代码如下:

class InfoWindow
{
public:
InfoWindow();

void Record(const string& info);
};

class MainWindow
{
public:
void OperationInMainWindow()
{
// Perform the operation.
...

// Record the operation information (okay here since m_infoWindow is
// accessible.
m_infoWindow.Record(...);
}

private:
InfoWindow m_infoWindow;

// Many other windows. Other windows have also operations whose information
// need to record. And getting worse, the other windows have children
// windows who have to record operation information in the main window's
// info window.
OtherWindow1 m_otherWindow1; //
OtherWindow2 m_otherWindow2;
...
};

如何让信息记录更简单?我尝试对信息窗口使用单例但不是很满意,因为信息窗口的生命应该由主窗口控制。多谢!!!

最佳答案

您所描述的是一种日志记录形式,而日志记录通常使用单例对象完成。 (这是单例为数不多的合理用途之一。)

您可以有一个单独的日志记录对象,将消息定向到当前的 InfoWindow。所以你会创建你的日志记录对象,默认情况下,它只是丢弃消息。创建 InfoWindow 时,它会向日志对象“注册”自己。从那时起,日志记录对象将消息定向到 InfoWindow。当 InfoWindow 被销毁时,它会注销日志对象。

这样做的好处是,您还可以使用单例日志记录对象将字符串复制到日志文件、控制台窗口或其他任何内容。

通过使用发布者/订阅者模型,您可以获得更通用和解耦的效果,但这可能比您此时想要和需要的更精细。

关于c++ - 如何让信息记录更简单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630573/

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