C ++ класс возвращает себя - PullRequest
0 голосов
/ 09 ноября 2018

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

Tab t(7,7,0.1);//this creates class with 7x7 array filed with 0.1 - it works perfectly
t.print(); //prints array 0 - this also works
t.set(6,6,7.5f).set(6,5,8.6f); //should set 7.5 on pos[6][6] and 8.6 on pos [6][5]
t.print();

Я не знаю, что должен возвращать этот метод "set". Я не очень хорошо знаю синтаксис с ++, потому что я привык к Java. Я вижу, что он должен возвращать указатель на this, или содержимое указателя this (& this), или указатель константы maby? Понятия не имею.

И я не хочу использовать c ++ 11.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018
class Foo {
public:
    int x_;

    Foo() : x_(0) {}
    Foo( int x ) : x_(x) {}

    Foo operator()() { return *this; }
}

int main() {
    Foo a( 3 );
    Foo b = a();

    std::cout << b << '\n';

    return 0;
}

выход

3
0 голосов
/ 09 ноября 2018
Tab& Tab::set(int, int, double) {
    // whatever
    return *this;
}

Тип возврата здесь Tab&, поэтому последующий вызов будет применяться к объекту Tab. Возвращение *this возвращает ссылку на текущий объект, поэтому второй вызов set изменит тот же объект, что и первый вызов set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...