我正在使用一个库,该库的类具有一个不同于其构造函数的 init
函数。每次我创建一个新实例时,我都需要调用,例如:
MyClass a;
a.init();
由于 init
不是 const
,这会阻止我创建 const 实例(我无法编写 const MyClass a
)。有什么方法可以调用 init 然后从“here on out”声明(我猜对于范围的其余部分)我的变量是 const
?
这可行,但依赖于不触及原始变量:
MyClass dont_touch;
dont_touch.init();
const MyClass & a = dont_touch;
最佳答案
如果你使用 C++11,你可以使用 lambda 函数
const MyClass ConstantVal = []{
MyClass a;
a.init();
return a;
}();
这允许您保持初始化,同时永远不会让外部访问可变对象。 也可以看看: http://herbsutter.com/2013/04/05/complex-initialization-for-a-const-variable/
关于c++ - 我可以从现在开始创建一个变量 _const 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399868/