对于我的大学作业,我需要为基于函数(或命令)的语言制作 C++ 解释器。解释器必须读取输入文件,提取单词(字符串),生成命令并执行它们。所有命令都是继承自一个公共超类(Command
例如 )的类,它有一个名为 的虚拟方法execute
。对于从输入文件中读取的每个单词,都会创建一个命令并将其存储在vector<Command>
.
所以,我正在考虑使用一个哈希表,它的键是命令的名称(字符串),它的值是某种允许我创建特定类的对象(或者让我访问特定类的构造函数),轻松地为每个单词创建类,而不是使用 if-else-if 链。
到现在为止,我正计划创建一个CommandGenerator
类,它调用generate
一个返回一个新Command
对象的虚方法。我的命令哈希表的值将是CommandGenerator
该类的对象。所以我从它派生了所有命令的许多其他子类,它们返回从Command
.
但是,这样的东西已经存在了吗?或者有没有更优雅的方式来做到这一点?是否可以从类中提取任何类型的对象来表示它?