我想减少引用函数所需的语法量,并且想知道是否有办法做类似的事情:
(不可编译)
using pushToLastUsed = mSomeLongStackFIFOObject.push_back;
// or
auto pushToLastUsed = mSomeLongStackFIFOObject.push_back;
Run Code Online (Sandbox Code Playgroud)
然后我可以这样:
pushToLastUsed(10);
Run Code Online (Sandbox Code Playgroud)
代替:
mSomeLongStackFIFOObject.push_back(10);
Run Code Online (Sandbox Code Playgroud)
当然我可以制作一个像:
#define pushToLastUsed mSomeLongStackFIFOObject.push_back
// some code using it here
#undef pushToLastUsed
Run Code Online (Sandbox Code Playgroud)
但我不想使用宏.
一种解决方案可能是使用lambda表达式将函数调用捕获到可调用对象中:
#include <vector>
void foo(std::vector<int> & bar)
{
auto pushToLastUsed = [&bar](int index) {
bar.push_back(index);
};
pushToLastUsed(10);
}
Run Code Online (Sandbox Code Playgroud)
虽然在我看来,即使你bar用一个很长的标识符取代,也没有什么好处.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |