代码之家  ›  专栏  ›  技术社区  ›  Ramazan Chasygov

C++运算符=超载

  •  0
  • Ramazan Chasygov  · 技术社区  · 6 年前

    我有结构 Token ,我正在尝试将operator=分配给它。我想分配给char。我试过了 char operator=(const Token& token){ return token.kind; } ,即抛出错误,表示不是一元运算符,已尝试 char operator=(const char& ch, const Token& token){ return token.kind; } 也没有帮助。是的,我可以 char ch { token.kind }; ,但我想通过操作符来做,以防添加一些逻辑。你能帮助我吗?

    REPL EXAMPLE

    struct Token {
      char kind;
      int value;
    
      Token(char kind, int value): kind(kind), value(value){}:
    }
    
    1 回复  |  直到 6 年前
        1
  •  7
  •   songyuanyao    6 年前

    operator= char Token

    conversion function

    struct Token {
      char kind;
      int value;
    
      Token(char kind, int value): kind(kind), value(value){}
      operator char() const { return kind; }
    };
    

    explicit c = static_cast<char>(token);