我有一个带有六个函数的C ++程序,它们对文件系统的实现执行操作。我对这些功能没有任何问题 - 这是一个学校项目,我的问题是关于测试方法。我需要接受"命令"这基本上是函数调用 - 例如"写(test.dat,128KB)"或"阅读(test.dat)"。
我找到了使用switch语句根据输入调用函数的解决方案,但由于每个命令都有自己的参数,所以在我的情况下这是不可能的。有没有办法将用户输入转换为函数调用?我能想到的唯一方法是解析字符串并提取要调用的函数,并使用switch语句来调用该函数,并分别提取参数并将其传递给函数 - 但这似乎效率低下。是否有可能有完全不同的更好的方法来做到这一点?
答案 0 :(得分:0)
解析命令文本。你得到一个命令名和参数(可能是所有字符串)。
查找命令的处理程序。它可能有一个验证器'或者'参数类型解析器'阶段,或者它可能只是一个调用。
调用命令,向其传递vector
个参数(作为字符串或由参数类型解析器生成的boost::variant
)。
调用者可以使用已知参数包装函数,并将vector
转换为C ++调用。花哨的模板元编程可以在不半手动编写的情况下实现,但除非你有工业规模的程序,否则可能不值得。