编译错误:' - >'的基本操作数具有非指针类型'令牌'

时间:2013-03-03 04:15:37

标签: c++

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

编译器在执行bool operator==(Token )函数时遇到问题。我认为这是超载运营商的方式。

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

1 个答案:

答案 0 :(得分:11)

仔细查看您的类型。 treferenceToken &t),表示必须使用点运算符(.)引用它。

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