Как решить данную задачу на C++?

Рейтинг: -2Ответов: 1Опубликовано: 25.02.2023

Текст задачи: Напишите структуру ThisChecker. У неё будет всего один метод bool IsSame(const ThisChecker&). Т.е. метод принимает только один аргумент, константную ссылку на объект типа ThisChecker. Этот метод должен вернуть true, если аргументом является тот же самый объект, метод которого вызывается, и false в противном случае (см. пример). Метод должен работать как для константных, так и не константных объектов(также см. пример) В систему отправляйте только код структуры

Пример:

    ThisChecker a;
    ThisChecker b;
    std::cout << a.IsSame(b) << "\n"; // false
    std::cout << a.IsSame(a) << "\n"; // true
    const ThisChecker& c = a;
    std::cout << c.IsSame(a) << "\n"; // true

У меня написан небольшой код, он выглядит так:

#include <iostream>

struct ThisChecker {
    bool IsSame(const ThisChecker&t) {
        if (&t == this) {
            return true;
        }
        else {
            return false;
        };
    }
};

int main(){
    ThisChecker a, b, c;
    std::cout << a.IsSame(a);
    std::cout << b.IsSame(a); 
    std::cout << b.IsSame(b);
    const ThisChecker& c = a;
    std::cout << c.IsSame(a) << "\n";


    return 0;
}

Я никак не могу взять в толк - каким способом я могу взаимодействовать с объектом и аргументом внутри выполнения метода, чтобы анализировать их идентичность, или различие. Думаю, на них как-то нужно оставить ссылку, но сделать это, как ни пытался, не знаю как.

Кроме того, код не работает с константными объектами

Я сам начинающий - спасибо за помощь!

Ответы

▲ 1Принят

Попробуйте

bool ThisChecker::IsSame(const ThisChecker& t) const {
    return &t == this;
    }

Возможно, от вас хотят именно этого решения. Не "точно такой же", а "именно тот же".