【发布时间】:2013-09-29 14:30:11
【问题描述】:
程序背景:用户只能输入两个词的string - 一个动词和一个名词。我将此字符串标记为vector,并将tokens[0] 与允许动词的vector 进行比较,将tokens[1] 与允许名词的vector 进行比较。
现在,我正在尝试找到一种方法,只允许对某些名词执行某些动词。例如,写“take book”会给出一条消息(或其他),说它是允许的,但写“take door”则不会。到目前为止,我已经为每个可能的动词创建了一个带有 bool 值的 class 对象(例如,在 class Object 内,我可以为 m_take = true 创建一个 Object book,或者为 Object door 创建一个 false )。
但是,我无法将这些对象与用户输入关联起来。例如,我希望能够做这样的事情:
1)用户输入“动词名词”,作为tokens[0]和tokens[1]进入标记向量。
2) 程序检查输入是否包含可接受的单词(单独)。
3) 考虑到getstat() 是检索对象上可能执行的操作的布尔值的函数,程序检索tokens[1].getstat(tokens[0]),如果true,则执行tokens[0].tokens[1]()(例如book.take())。这样我就可以在我的main() 中只有一个if 循环,它可以被所有合法的动词和名词使用,而无需列出if、else if 等的无限列表,手动考虑每个选项。
对不起,如果这令人困惑。我知道不可能将变量用作对象名称,但我确信有更好的方法来做到这一点,而不是在考虑动词和名词的每一个混合和匹配的循环中循环。我目前正在尝试每个 3 个,但是一旦我开始工作,我计划扩展它,如果我必须对每个可能的动词和名词进行多次硬编码,那么跟踪每一个变化将是一场噩梦源代码。 (另外,很抱歉没有发布整个源代码 - 这是一个非常长的文件!) 感谢您在正确方向上的任何帮助/提示!
【问题讨论】:
-
您可能想了解指向成员的指针 的概念(也可能是关于虚函数)。