C ++输出:GUI还是控制台?

时间:2013-03-01 18:15:12

标签: c++

我正在使用C ++创建一个运行模拟健康俱乐部的应用程序。用户只需在开头输入模拟数据(3个整数值)并按下运行。之后没有用户输入 - 非常简单。

在开始模拟之后,许多逻辑在较低级别的内部深处,但是很多逻辑需要将简单的输出消息打印到UI。无法返回消息,因为对象需要打印到UI但仍在继续工作。

我打算将UI对象的引用传递给所有需要它的类但是我最终传递了很多 - 必须有更好的方法。

我真正需要的是能够使UI的printOutput(字符串)函数与cout<<一起调用(或者不太困难)的功能。串;

UI还有一个displayConnectionStatus(bool [] connections)方法。

请记住,UI继承了一个抽象的“UserInterface”类,因此可以轻松地更改控制器UI和GUI。

您如何建议我实现此UI的链接?

如果我要使用全局函数,如何将其重定向到我选择使用的UserInterface实现的调用方法?

2 个答案:

答案 0 :(得分:4)

不要害怕全局。

全局对象会破坏封装,但对于无需立即重用的目标解决方案,全局对象就可以了。

公开处理模拟事件的全局对象。然后,您可以选择打印事件,通过电子邮件发送,使用OpenGL或任何您喜欢的内容进行渲染。创建一个统一的接口,通过报告回调捕获模拟中发生的事情,然后您可以将此全局对象子类化以满足您的需求。

如果对象不是全局的,那么你将在所有代码库周围传递一个指针。

答案 1 :(得分:0)

我建议去登录框架,即你自己的类LogMessages,它有获取数据和记录数据的功能,它可以是UI,文件,网络或任何东西。

每个需要记录的类都可以使用您的日志记录类。

这样你可以避免使用全局变量和通用解决方案,也可以查看http://www.pantheios.org/这是开源C / C ++诊断日志API库,你也可以使用它...