C ++:调用operator equals的原始定义

时间:2013-10-21 03:45:27

标签: c++ operator-overloading equals-operator

我正在重载运算符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 ==是递归调用的。那么,如何调用运算符的原始定义等于(而不是重载)?

祝你好运

2 个答案:

答案 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;
}
相关问题