C ++: назвать оригинальное определение оператора равным

Я перегружаю оператор равен (==), как показано ниже:

#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

Решение

return std::operator==(str1, str2);

или же

return (str1.compare(str2) == 0);

Хотя я подозреваю, что между вашими operator== найденный обычным поиском, и std::operator== найден аргументно-зависимым поиском. В любом случае, пытаясь изменить смысл str1 == str2 не может быть лучшей идеей; если ничего другого, это нарушает Принцип Наименьшего Удивления.

0

Другие решения

return (str1 == str2);

to------->

if( 0 == str1.compare(str2))
{
return true;
}
else
{
return false;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector