我正在使用一个库,它具有与其构造函数不同的init
函数。我每次做一个新的实例我需要调用,例如:从现在开始,我可以创建一个变量_const吗?
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;
答案是否定的。像你一样,我希望是的。 – Mehrdad
你也可以使用'const_cast'作为'init'调用来做到快速和肮脏。也就是说,在'init'调用的对象周围声明对象'const'和'const_cast'。然而,'const_cast'通常被认为是不好的做法,我必须说我认为[模板解决方案](http://stackoverflow.com/a/23400028/3100771)是超级光滑的。 – Apriori
@Apriori绝对未定义的行为。不能const_cast从一个已定义的const对象中取出const并且对它做非const的东西。 –