我编写了将罗马变换为整数的算法(下面的代码),我得到错误'这个函数的参数太多了',但是我需要两个参数来进行比较。有人知道如何修复我的代码吗?
#include <iostream>
using namespace std;
int main() {
class Solution {
private:
struct symbol {
char upperCase;
char lowerCase;
bool operator ==(char& a, symbol& b) { // ERROR: too many parametres for this function
return a == b.upperCase;
};
};
const symbol one {'I', 'i'};
// ...
const symbol thousand {'M', 'm'};
public:
int romanToInt(string s) {
// ...
}
};
return 0;
}
答案 0 :(得分:3)
运算符的左参数是自动Microsoft.Cognitive.LUIS
对象,您不需要在参数列表中指定这两个参数。
this
但是,这只允许bool operator== (char& a) {
return a == upperCase;
}
,而不是symbol == char
。对于后者,您需要常规函数,而不是成员函数。您需要将此声明为char == symbol
friend
,以便它可以访问私有Solution
类。
symbol
答案 1 :(得分:2)
你最好为if(modelSalesAct.getStatus().equals("2"))
{
ivStatus.setImageResource(context.getResources().getDrawable(R.drawable.ic_black));
}
个对象设置一个重载,为symbol
设置另一个重载:
char
在重载等于运算符时,将针对当前实例检查唯一参数(即 bool operator ==(symbol& b)
{
return (b.upperCase==upperCase);
}
bool operator ==(char& a)
{
return a == upperCase;
}
)。