在尝试编译我的c ++代码时,我收到了标题中提到的错误。我无法理解我在这里做错了什么。
编译器在执行bool operator==(Token )
函数时遇到问题。我认为这是超载运营商的方式。
关于编译器为什么不喜欢我指的任何线索
this->terminal
或this->lexeme
?
class Token {
public:
tokenType terminal;
std::string lexeme;
Token *next;
Token();
bool operator==(Token &t);
private:
int lexemelength, line, column;
};
bool Token::operator==(Token &t) {
return ((this->terminal == t->terminal) &&
(this->lexeme == t->lexeme));
}
答案 0 :(得分:11)
仔细查看您的类型。 t
是reference(Token &t
),表示必须使用点运算符(.
)引用它。
引用不是指针;将它们视为已经取消引用的指针而不将实际对象放在堆栈上(通过引用传递)。