gpt4 book ai didi

c++ - 从控制台和 gui 应用程序的输入设计中读取值 (c++)

转载 作者:行者123 更新时间:2023-11-28 03:24:03 26 4
gpt4 key购买 nike

我有一个 C++ 库,其中包含一个实现自定义编程语言虚拟机(称为“VM”)的类。这种语言有一些不同的指令可以执行,其中有“从输入读取值”指令。 VM 可以以两种模式运行:逐步执行单个指令(直到机器完成)或一次执行所有指令。它还可以用于两个应用程序:控制台和 GUI 应用程序。

到目前为止,我只有一个控制台应用程序。当执行“从输入读取值”指令时,它只是使用 std::cin 读取值,因此虚拟机停止,直到输入被提交。当我尝试为 VM 创建 GUI 时出现问题。我将使用典型的文本输入而不是 std::cin

问题是:从执行指令的角度来看,您认为模拟此类问题的最佳方法是什么?当执行“从输入读取值”指令时,VM 应该如何表现?用户在点击“执行单条指令”之前,并不知道这将是一条什么样的指令,因此无法在指令执行前提交输入。

我正在考虑向 VM 添加一个新的状态属性:{working|awaiting_input}。在“读取”指令运行期间,机器应该暂停,直到它获得输入。当 GUI 层从用户获取输入时,它会调用 VM 的 passInput(inputValue) 新方法,该方法另外唤醒 VM(以完成单个指令或所有指令)。您能想到更简单的解决方案(例如,不添加状态属性)吗?

最佳答案

第一步是将你的“输入”从 VM 引擎的一个组成部分中分离出来[现在听起来像是],这样当你从输入中获得“读取值”时,你只需调用一个“do_input”函数 - 在“user_interface”类中实现的虚拟函数 - 可以是 UI 或 iostream。

无论是单站运行还是“全速”运行应该没有什么区别,“指令”在收集到输入之前不会完成,对吧?

现在,GUI 可能非常棘手,因为它往往是事件驱动的,而输入只是另一个事件。但是,如果您将“do_input”函数实现为仅在读取输入时返回的函数,那么这没什么大不了的。你只需要一些(部分)窗口作为“这是你输入输入的地方”,用户将不得不输入一些东西。当用户按下回车键(或单击按钮等)时,您就完成了输入。

您可能还希望有一种从文件中读取输入的模式...;)

它可能比我刚才描述的要复杂一些,但应该不会比这多很多。 [我以前在指令模拟器中做过类似的事情,其中​​一条指令可以有效地花费“无限”的时间,因为它等待输入]。

关于c++ - 从控制台和 gui 应用程序的输入设计中读取值 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625158/

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