【发布时间】:2014-09-03 04:25:18
【问题描述】:
我正在实现一个模拟“条件跳转”的基本解释器函数。 它需要四个输入,分别是
- 变量(字符类型)
- 运算符( ...)(字符串类型)
- 整数值(int类型)
- 行号(int类型)
函数声明
void ProgramState::conditionalJump(int var, std::string op, int immediate, int destination);
// condition: Compares var and immediate using op
// if condition is true: modify current address to destination if the
// if false: nothing happens
例如,我可以编写一个非常粗略的实现,如下所示:
示例:
if ( (op == "<") && (var < immediate) ){
cur_line = destination;
}
有没有一种简单的方法可以做到这一点? 我想过重载运算符,但我不确定它是否有效。
【问题讨论】:
-
我不清楚你在问什么。
-
有没有办法将字符串类型转换为运算符类型?
-
你能贴出函数的签名,解释一下参数代表什么,函数应该做什么?
-
我认为你所拥有的是最简单的实现
-
不存在“算子类型”这回事吧?您想要
var (op) immediate之类的东西,其中op被评估为参数之间的运算符。 C++ 中没有这样的东西;你唯一能做的就是以更复杂的方式编写你已经拥有的东西,可以说更干净/更易读,但原则上功能相同。