参见英文答案 >
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
.