c – 标准似乎支持(下面的代码片段编译)一个与类本身具有相同类型的静态数据成员[复制]

前端之家收集整理的这篇文章主要介绍了c – 标准似乎支持(下面的代码片段编译)一个与类本身具有相同类型的静态数据成员[复制]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > About C++ classes with self reference2个
标准中有哪些具体内容?我发现§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.

原文链接:https://www.f2er.com/c/120028.html

猜你在找的C&C++相关文章