【发布时间】:2016-05-10 08:08:51
【问题描述】:
假设我想声明一个 local 静态常量数组,但我不知道它在编译时的初始化值,必须先计算这些值。 例如,我有一个数组int p[100]。我写了一个循环来用前 100 个素数填充它。在计算完这些之后,我定义了一个static const int primes[100],它必须由p 的值初始化。我该怎么做?
附: “为什么我要声明一个本地静态 const 对象?”的问题?可能没有令人满意的答案,但我认为这里不是这样。
附言我提到质数只是作为一个例子。这不是重点。
P.S.S.S.假设p 有 1000000 个成员。那么 user2079303 建议的解决方案肯定值得更多的支持。
【问题讨论】:
-
@EddeAlmeida - 这根本不是真的。常量可以在运行时初始化,只是不能改变。考虑函数的局部常量
-
好的@Smeeheey。我删除了我之前发表的愚蠢评论。
-
那么我应该说,常量在创建时就被初始化了,在那之后就不能再改变了。因此,不能只创建一个常量来稍后给它一个值。这是正确的吗?
-
如果你真的需要一个不是真正 const 的静态 const 数组,我会使用
memcpy和const_cast的组合。 -
您能否提供更多详细信息? @KarstenKoop
标签: c++ arrays static initialization