Как передать ссылку на this?

228
14 марта 2017, 15:45

Есть класс, для упрощения восприятия я убрал все лишнее.

Вопрос такой, в одном методе надо использовать 2 объекта Demo чтобы создать третий, но одним из этих двух объектов является объект, метод которого вызывается

class Demo {
public:
    // Делаем что-то умное, для упрощения понимания все лишнее удалено
    Demo Process(Demo& _Demo) const {
        Demo outDemo;
        return outDemo;
    }

    Demo Test(Demo& _Demo) const {
        Demo outDemo = Demo();
        outDemo.Process(this); // Тут ошибка
        outDemo.Process(_Demo);
        return outDemo;
    }
};
Answer 1

Вызов будет выглядеть так

outDemo.Process(*this);

Но у вас метод Test является const. Поэтому внутри него *test - это const Demo. Соответственно передать *this как Demo & вы не сможете. Вызвать ваш Process вы сможете только в том случае, если он объявлен как

Demo Process(const Demo& _Demo) const

Я так понимаю, что именно это вам и нужно, но вы просто забыли добавить этот const.

Answer 2

Если Process принимает const Demo &, то правильно так:

Demo Test(Demo& _Demo) const {
    Demo outDemo = Demo();
    outDemo.Process(*this);
    outDemo.Process(_Demo);
    return outDemo;
}
READ ALSO
QT разбиение проекта на несколько файлов

QT разбиение проекта на несколько файлов

Упростил код, дабы было легче разобраться с проблемойИмеется класс, описанный в mainwindow

221
fseek. Время работы

fseek. Время работы

ПриветУ меня стоит задача осуществлять многократное перемещение по файлу

266
Функции с переменным числом параметров - C++ [требует правки]

Функции с переменным числом параметров - C++ [требует правки]

Как обратиться к элементам в вызове функции, когда буду проверять, можно ли построить треугольник?

237
В чем ошибка отправлений данных через ajax?

В чем ошибка отправлений данных через ajax?

Всем доброго времени суток,отправляю ajax'ом id в таблицу на удаление,беру через инпутВыскакивает функция success,пишет,что все выполненоНО как...

235