Перегрузка операции ==

132
24 мая 2019, 13:20

Есть класс и у него перегружена операция ==

bool operator== (StringСustomize *b) {
    return isQually(this, b);
}
    bool isQually(StringСustomize *a, StringСustomize *b) {
    if (a->length() == b->length()) {
        for (int i = 0; i < a->length(); i++) {
            if (a->str[i] != b->str[i]) {
                return false;
            }
        }
        return true;
    }
    else {
        return false;
    }
}

И есть проблема

std::cout << (t->isQually(t,t1) ? "True" : "false"); // TRUE
std::cout << (t == t1 ? "True" : "false"); // FALSE

При условии что t и t1 равны

Answer 1

Судя по вашему коду у вас t и t1 - указатели, а оператор == перегружен для StringСustomize& и StringСustomize*.

В t == t1 вы сравниваете два указателя, которые, конечно же, не равны.

Сравнивайте тогда уж так: *t == t1 или t->operator==(t1).

READ ALSO
Как внести имя шаблона в класс с помощью using declaration?

Как внести имя шаблона в класс с помощью using declaration?

Чтобы внести имя зависимого типа из базового класса в класс-наследник с помощью using declaration, нужно явно указать ключевое слово typenameНо как внести...

131
Зачем super в методах? Android

Зачем super в методах? Android

Часто встречаю код, примерно как этот:

119
Ошибка при создании Image

Ошибка при создании Image

Вот возникает такая ошибка, как ее исправить помогите пожалуйста: Exception in thread "AWT-EventQueue-0" javalang

129
Spring Security Как отображать все страницы кроме

Spring Security Как отображать все страницы кроме

Столкнулся со следующей проблемойХочу реализовать отображение всех страниц для не авторизированных пользователей кроме страницы accaunt

139