首先,对标题不太清楚感到抱歉,用代码解释起来容易得多:

给定这样的函数原型:

auto sum(int a){
      ...
}


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

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


我只是想以此为个人知识,所以如果有人指出我应该学习哪种结构来实现这一目标,我将不胜感激(我很确定我必须使用std :: 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;
}

07-24 09:46
查看更多