c++ - C++函数链返回函数
问题描述
首先很抱歉标题不太清楚,用代码解释它要容易得多:
给定这样的函数原型:
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;
}
推荐阅读
- c# - 如何在异步数据库连接期间避免“访问冲突”?
- linux - 从数据文件的每一行中提取 2 个字段并插入到外部程序中
- typescript - 将自引用作为抽象基类静态函数中的参数传递给子类
- swift - 为什么 Xcode 会为选择器添加自动完成方法?
- java - 来自 nginx 的请求失败,状态码为 504
- tensorflow - 我得到“启用急切执行时,Tensor.op 毫无意义。” 在我的简单编码器模型中。(TF 2.0)
- android - 无法在 Android Studio 中解析符号“URL”
- javascript - 如何使 ag-grid 列与列中最大的文本一样宽
- database-administration - Greenplum 数据库中的时间点恢复
- bash - 得到一个“head: error reading 'path': is a directory”错误