7

尝试编译我的 c++ 代码时,我收到标题中提到的错误。我无法理解我在这里做错了什么。

bool operator==(Token )编译器对我的函数实现有问题。我认为这是重载运算符的方法。

关于为什么编译器不喜欢我提到 this->terminalor的任何线索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));
}
4

1 回答 1

12

仔细看看你的类型。t是一个引用( Token &t),这意味着必须使用点运算符 ( .) 来引用它。

引用不是指针;将它们视为已经取消引用的指针,而无需将实际对象放入堆栈(通过“引用”传递)。

于 2013-03-03T04:19:33.750 回答