【发布时间】:2018-05-21 09:54:16
【问题描述】:
在阅读《Thinking in Java》一书时,我发现了这一行
例如,C++ 有问题,如果一个静态期望另一个静态 在第二个初始化之前有效
随后我尝试通过以下code 确定自己:
class A{
public:
static int x;
};
int A::x = B::y; //error 'B' has not been declared
class B{
public:
static int y;
};
int B::y = 10;
int main()
{
return 0;
}
我的问题是有没有办法克服这个问题。 Java 通过在访问静态字段/方法时加载类代码来处理此问题。我们如何在 C++ 中做到这一点?
【问题讨论】:
-
你在这里混用了术语。这本书谈到了静态初始化顺序惨败(导致运行时未定义的行为)。您的验证在一个文件中处理申报顺序,与 SIFO 无关。
-
好的。明白你的意思。仍然很想知道上述代码的解决方法。感谢您指出。
标签: c++ compiler-errors static initialization