首页 > 解决方案 > C++函数链返回函数

问题描述

首先很抱歉标题不太清楚,用代码解释它要容易得多:

给定这样的函数原型:

auto sum(int a){
      ... 
}

我希望能够以这种方式使用它:

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

我只是为了个人知识而尝试这样做,所以如果有人能告诉我我应该研究哪些结构来实现这一点,我将不胜感激(我很确定我必须使用 std::function,但我没有知道如何),而不是给我简单的解决方案。

谢谢大家。

标签: c++function

解决方案


可能不是确切的答案,但您可以尝试这种方式:

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;
}

推荐阅读