【发布时间】:2015-12-10 20:00:57
【问题描述】:
我想知道是否可以以某种方式将以下整数声明为 const。它们的值仅在下面的函数中更改一次。
int32_t offset_x, offset_y;
frame1.get()->enlargeForMerge(frame2.get(), offset_x, offset_y);
void SlpFrame::enlargeForMerge(const SlpFrame &frame, int32_t &os_x, int32_t &os_y)
是否有一些 lambda 东西等可以让我拥有这样的东西:
const int32_t offset_x, offset_y => magic[1, 2]()
frame1.get()->enlargeForMerge(frame2.get(), offset_x, offset_y);
与第一个代码的唯一区别是偏移整数从现在开始是恒定的。我查看了 lambda 文档,但它超出了我的范围。
【问题讨论】:
-
不适用于 2 个分隔值。但如果包裹在 std::pair 或类中,这是可能的。
-
不,你不能这样做。但是您可以使用晦涩的名称声明您的变量非常量,并在通过您的
enlargeForMerge设置它们之后立即声明一个具有正常名称的 const 引用。 -
如果一个对象是 const,它在其整个生命周期内都是 const。任何修改它的尝试都有未定义的行为。
标签: c++ lambda initialization constants pass-by-reference