我正在重载运算符equals(==)如下所示:
#include <string>
#include <algorithm>
bool operator == (std::string str1, std::string str2) {
std::transform(str1.begin(), str1.end(), str1.begin(), ::tolower);
std::transform(str2.begin(), str2.end(), str2.begin(), ::tolower);
return (str1 == str2);
}
但是,问题出现在返回行(str1 == str2),因为operator ==是递归调用的。那么,如何调用运算符的原始定义等于(而不是重载)?
祝你好运
答案 0 :(得分:0)
return std::operator==(str1, str2);
或
return (str1.compare(str2) == 0);
虽然我怀疑你的普遍查找找到的operator==
和依赖于参数的查找找到的std::operator==
之间存在模糊的过载错误。无论如何,试图改变str1 == str2
的含义可能不是最好的主意;如果不出意外,它会违反Principle of Least Astonishment。
答案 1 :(得分:0)
return (str1 == str2);
to------->
if( 0 == str1.compare(str2))
{
return true;
}
else
{
return false;
}