运算符重载中没有运算符'=='匹配[重复]
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)&'运算符重载中的'&'是什么意思? [重复]