我正在研究“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;
}
答案 0 :(得分:2)
至少声明操作符
bool operator ==(char ch) const {
return ch == upperCase || ch == lowerCase;
};
并使用
return one == ch;