在 C++ 中声明在类定义时不完整的类型的静态字段是否合法?例如:
Foo.h:
class Foo
{
public:
// ...
private:
class Bar;
static Bar something;
};
Foo.cpp:
class Foo::Bar
{
// ...
};
Foo::Bar Foo::something;
// some more code
编译器似乎接受它,并且我看不出应该拒绝它的理由,但是标准对这种情况说了些什么?我真的很感激有人直接引用该标准,最好是“旧”标准(2003 年的标准)。
是的,您正在做的事情是明确允许的(§9.4.2/2):“类定义中静态数据成员的声明不是定义,并且可能是除 cv 限定的 void 之外的不完整类型。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)