运算符重载中没有运算符'=='匹配[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运算符重载中没有运算符'=='匹配[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我正在研究“Roman to int”算法,我的代码如下。我收到一个错误:

no operator "==" matches these operands -- operand types are: char == const Solution::symbol.

有人可以帮我修复代码吗?

// solution.h
#include <string>
using namespace std;

class Solution {
  private:
    struct symbol {
      char upperCase;
      char lowerCase;
      bool operator ==(char ch) {
        return ch == upperCase || ch == lowerCase;
      };
    };
    static constexpr symbol one {'I', 'i'};
    static constexpr symbol five {'V', 'v'};
    static constexpr symbol ten {'X', 'x'};
    static constexpr symbol fifty {'L', 'l'};
    static constexpr symbol hundred {'C', 'c'};
    static constexpr symbol fiveHundred {'D', 'd'};
    static constexpr symbol thousand {'M', 'm'};
  public:
    bool romanToInt() {
      char ch = 'I';
      ch == one; // ERROR: no operator "==" matches these operands -- operand types a re: char == const Solution::symbol
      one == ch; // ERROR: no operator "==" matches these operands -- operand types a re: const Solution::symbol == char
    };
};

// main.cpp
#include <iostream>
#include "../Header Files/solution.h"
using namespace std;

int main() {
  Solution solution;
  solution.romanToInt();

  return 0;
}
答案

至少申报运营商

  bool operator ==(char ch) const {
    return ch == upperCase || ch == lowerCase;
  };

并使用

return one == ch;

以上是关于运算符重载中没有运算符'=='匹配[重复]的主要内容,如果未能解决你的问题,请参考以下文章

'operator ++(int)&'运算符重载中的'&'是什么意思? [重复]

Python重载比较运算符

使用重载运算符'<')和'Person')

Python运算符重载

我正在尝试对运算符'+'执行二进制重载,但输出错误,我不明白为什么?

类型匹配没有可行的重载运算符