参见英文答案 >
About C++ classes with self reference2个
标准中有哪些具体内容?我发现§9.2/ 10:非静态(9.4)数据成员不应具有不完整的类型.特别是,类C不应包含类C的非静态成员,但它可以包含指向C类对象的指针或引用,但这似乎并不直接支持手头的问题.
标准中有哪些具体内容?我发现§9.2/ 10:非静态(9.4)数据成员不应具有不完整的类型.特别是,类C不应包含类C的非静态成员,但它可以包含指向C类对象的指针或引用,但这似乎并不直接支持手头的问题.
- #include <iostream>
- struct A{
- int i;
- static A a;
- };
- A A::a{10};
- int main() {
- std::cout << A::a.i << '\n';
- }
解决方法
C 11 9.4.2 / 2:
The declaration of a static data member in its class definition is not a definition and may be of an incomplete type other than cv-qualified
void
.