Функция, возвращающая цепочку функций C ++ - PullRequest
0 голосов
/ 24 октября 2019

Прежде всего, извините за непонятный заголовок, гораздо проще объяснить это с помощью кода:

Учитывая такой прототип функции:

auto sum(int a){
      ... 
}

Я хочу бытьмогу использовать это следующим образом:

add(3) == 3 //true
add(1)(2)(3) == 6 //true

Я просто пытаюсь сделать это для личного знания, поэтому я был бы признателен, если бы кто-то указал мне, какие конструкции я должен изучить, чтобы достичь этого (я 'Я уверен, что мне нужно использовать std :: function, но я не знаю как), вместо того, чтобы дать мне простое решение.

Спасибо всем заранее.

1 Ответ

3 голосов
/ 24 октября 2019

Может быть не точный ответ, но вы можете попробовать так:

class foo {
    int data = 0;
public:
    foo& operator()(int i) { data += i; return *this; }
    bool operator==(int i) { return this-> data == i; }
    void print() const { cout << data << endl; }
};

int main() {

    foo add;
    add(1)(2)(3);
    add.print();
    cout <<  (add(3) == 9 ?  "Same" : "Not same") << endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...