我知道静态订单初始化失败,但我想知道以下是否也会触发它:
const static Point center = CalculateCenter();
static Point currentPoint = center;
我想要两个静态变量(TU 中的内部链接),一个已初始化且常量,另一个在大量实例之间共享,但首先它应该具有相同的值 中心
.
这会触发静态订单初始化失败吗?如果是这样,我应该如何编码?
最佳答案
如果它们都在同一个编译单元中,那么就没问题(如果你对它们进行了正确的排序)。但如果不是,那么这是未定义的行为,因为初始化顺序。但是,您可以将 center
声明为 constexpr
而不是 const
,然后 center
在编译时已知,这应该没问题,但是 CalculateCenter()
还需要是一个 constexpr
,这在您的情况下可能是不可能的。
关于c++ - 用另一个初始化的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229714/