【发布时间】:2011-11-10 18:45:17
【问题描述】:
这些天我对const 关键字感到非常恼火,因为我不太熟悉它。我有一个存储所有 const 指针的向量,例如 vector<const BoxT<T> *> *Q_exclude,在另一个类的构造函数中,我需要将此队列中的一个元素作为参数传入并将其分配给非常量成员。我的问题是:
如何将 const 变量分配给非 const 变量?我知道这没有意义,因为毕竟 const 是 const,不应该以任何方式改变。但是那个烦人的成员变量真的必须在这个过程中改变!我也可能将向量中的数据类型更改为非常量,但这将是太多的工作。或者有谁知道如何避免这种情况?
【问题讨论】:
-
如果要更改它们指向的对象,为什么要存储指向 const 的指针?
-
也许发布一些代码......但正如 RMF 所说,这看起来像不幸的设计。
-
“但是那个烦人的成员变量真的必须在这个过程中改变!”那你为什么把它设为
const成员变量呢?如果您发现自己需要修改const的内容,那么这表明存在设计问题。要么你不应该修改它,要么你应该重新考虑它是否真的是const。 -
C++ 可能存在一些问题:您可能希望数据在某些函数中为 const,而在其他函数中为非 const。但是,对于
vector,要么全有,要么全无。 - 无论如何,你不需要做所有你能做的事情。 IMO,如果您可以传递 const 引用(以提高性能),那就足够了。 -
@UncleBens:存储非
const元素,然后将整个向量作为const传递到元素访问不应可变的上下文中。简单!