Можно ли иметь оператор, не являющийся членом как, не являющиеся членов в качестве частного члена иностранного класса
bool operator==(const std::string &l, const Token r)
в качестве частной функции члена неродственного класса Interpreter
? Я пробовал это очевидным образом, но он не работает (слишком много аргументов). я знаю, уже название «функции, не являющиеся членами [...] в качестве члена» говорит обратное, но есть лучший способ, чем функция
bool isToken(const std::string &l, const Token r)
сделать сравнение, которое зависит от а (нестатический) член Interpreter
?
Невозможно сравнить Token
s с string
за пределами Interpreter
.
Дополнительная информация: токен - это перечисление, и сравнение зависит от языка, установленного для построения Interpreter
.
Что такое 'токен', и как будет работать' '' '', если 'токен' был LHS? – jxh
Токен - это перечисление типа KEYWORD_ELSE или CONDITION_ALWAYS. KEYWORD_ELSE == «else» должен быть правдивым для «английского» интерпретатора и KEYWORD_ELSE == «sonst» должен быть правдой для «немецкого» переводчика. – Fabian
Также, как вы представляли себе синтаксис, как если бы оператор == был определен внутри Intepreter?Или вы просите оператора, который будет работать только в контексте интерпретатора, т. Е. Для методов членов интерпретатора? –