Я перегружаю оператор равен (==), как показано ниже:
#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 == вызывается рекурсивно. Так, как я могу назвать оригинальное определение для оператора равно (не перегружен)?
С наилучшими пожеланиями
return std::operator==(str1, str2);
или же
return (str1.compare(str2) == 0);
Хотя я подозреваю, что между вашими operator==
найденный обычным поиском, и std::operator==
найден аргументно-зависимым поиском. В любом случае, пытаясь изменить смысл str1 == str2
не может быть лучшей идеей; если ничего другого, это нарушает Принцип Наименьшего Удивления.
return (str1 == str2);
to------->
if( 0 == str1.compare(str2))
{
return true;
}
else
{
return false;
}