请教小弟我的这个操作符重载错在哪?多谢
请问我的这个操作符重载错在哪?谢谢
我写了个比较算符的优先级,但是好象有错误,请大家帮忙看看这个重载的操作符。
谢谢;
bool operator> (string &s1,string &s2)
{
if(s1 == "! "&& s2!= "! ")
return true;
else if((s1== "* "||s1== "/ ")&&(s2 != "! ")&&(s2!= "* ")&&(s2!= "/ "))
return true;
else if((s1== "+ "||s1 == "- ")&&(s2!= "! ")&&(s2!= "* ")&&(s2!= "/ ")&&(s2!= "+ ")&&(s2!= "- "))
return true;
else if(((s1== "> ")||(s1== " < ")||(s1== "> = ")||(s1== " <= ")||(s1== "== ")||(s1== "!= "))&&((s2== "&& ")||(s2== "|| ")))
return true;
else return false;
}
------解决方案--------------------
啥错啊?
你这要实现啥功能啊?
------解决方案--------------------
操作符重载最好不要改变操作符本身的意思
------解决方案--------------------
Err 最好的方法 是在里面再来个inline函数 里面使用switch判断出两个操作的优先级 然后再比较两个数字 呵呵 这样子逻辑比较清楚
int pri(string &s){
switch(s){
case " ": return 0;
..............
// and so on
}
}
bool operator> (string &s1,string &s2){
int i = pri(s1);
int j = pri(s2);
return i > j;
}
我写了个比较算符的优先级,但是好象有错误,请大家帮忙看看这个重载的操作符。
谢谢;
bool operator> (string &s1,string &s2)
{
if(s1 == "! "&& s2!= "! ")
return true;
else if((s1== "* "||s1== "/ ")&&(s2 != "! ")&&(s2!= "* ")&&(s2!= "/ "))
return true;
else if((s1== "+ "||s1 == "- ")&&(s2!= "! ")&&(s2!= "* ")&&(s2!= "/ ")&&(s2!= "+ ")&&(s2!= "- "))
return true;
else if(((s1== "> ")||(s1== " < ")||(s1== "> = ")||(s1== " <= ")||(s1== "== ")||(s1== "!= "))&&((s2== "&& ")||(s2== "|| ")))
return true;
else return false;
}
------解决方案--------------------
啥错啊?
你这要实现啥功能啊?
------解决方案--------------------
操作符重载最好不要改变操作符本身的意思
------解决方案--------------------
Err 最好的方法 是在里面再来个inline函数 里面使用switch判断出两个操作的优先级 然后再比较两个数字 呵呵 这样子逻辑比较清楚
int pri(string &s){
switch(s){
case " ": return 0;
..............
// and so on
}
}
bool operator> (string &s1,string &s2){
int i = pri(s1);
int j = pri(s2);
return i > j;
}