我有一个类A
的程序参数,在程序运行期间应该不会改变,即在开始初始化之后,我只是在任何地方传递const A&
。现在我需要在程序开始时我不知道的值添加一个新参数duble p
,但我需要稍后再分配它。我知道如何更改const对象(通过指针或const_cast)有不同的方法,但这里的最佳做法是什么?有什么方法可以做到这一点并使程序易于阅读。
这样可以(安全和干净)还是应该以不同的方式完成?
class A
{
public:
/* bunch of parameters which are initialized in constructor of A */
double p; /* not change in constructor */
};
void change_p(const A& par)
{
*(&par.p) = 5;
}
int main()
{
A par();
change_p(par);
}
答案 0 :(得分:1)
将double
声明为mutable
,然后即使对象为const
也可以更改:
class A
{
public:
/* bunch of parameters which are initialized in constructor of A */
mutable double p; /* not change in constructor */
};
void change_p(const A& par)
{
par.p = 5; // <-- OK, even though par is const!
}
int main()
{
A par;
change_p(par);
}