【发布时间】:2017-02-11 19:37:39
【问题描述】:
只是想整理一个程序,想知道是否有人可以给我一些关于在同一行上多次调用一个队列上的成员函数的语法糖。
例如,改变:
queue<int> q;
q.push(0);
q.push(1);
类似于:
q.(push(0), push(1));
//or
q.push(0).push(1);
我知道这看起来有点荒谬,而且不实用。但是,如果我想缩短这样的一小部分代码,是否可以选择这样做?从我目前阅读的内容来看,只有当函数具有非void 返回值时,才可能链接方法。
当然,这是一个选项:
q.push(0); q.push(1);
但我试图避免出现两次q。再次......语法糖:)
这里的目标不是初始化,而是压缩一个对象/容器在一段代码中被调用的次数。我引用队列的原因是因为它是动态的。
【问题讨论】:
-
使 q.push() 返回对 q 的引用。
-
使用初始化列表?
-
如果 >=C++11:
queue<int> q{0,1} -
此样式名为Fluent interface。但要非常小心执行顺序。
-
我实际上想知道为什么我们没有一个很好的规范来解决这个问题(关于c++ 标签)。好吧,这个将来可能会用作副本。
标签: c++ method-chaining syntactic-sugar function-calls member-functions