【发布时间】:2013-08-30 23:46:10
【问题描述】:
是否可以有一个像这样的非会员运营商
bool operator==(const std::string &l, const Token r)
作为不相关类Interpreter 的私有成员函数?
我以明显的方式尝试了它,但它不起作用(参数太多)。
我知道,标题“非成员函数 [...] 作为成员”已经说反了,但是有没有比函数更好的方法
bool isToken(const std::string &l, const Token r)
进行依赖于Interpreter 的(非静态)成员的比较?
在Interpreter 之外无法将Tokens 与strings 进行比较。
一些进一步的信息:令牌是一个枚举,比较取决于Interpreter 构造时设置的语言。
【问题讨论】:
-
什么是
Token,如果Token是 LHS,==将如何工作? -
Token 是一个像 KEYWORD_ELSE 或 CONDITION_ALWAYS 这样的枚举。 KEYWORD_ELSE == "else" 对于“英语”口译员应该为真,KEYWORD_ELSE == “sonst”对于“德语”口译员应该为真。
-
另外,如果 == 运算符是在 Intepreter 中定义的,您如何想象语法看起来像?或者您要求的运算符只能在解释器的上下文中工作,即用于解释器的成员方法?
-
与其将标记与字符串进行比较,您是否可以将字符串转换为标记(在解释器的上下文中),然后将生成的标记相互比较?
-
您的程序是否需要动态绑定到解释器,或者您可以假设您的程序在其持续时间内以单一语言模式运行?
标签: c++ class operator-keyword member non-static