【发布时间】:2018-05-12 19:09:09
【问题描述】:
C++ 语法struct A::B:A {}; 是什么意思? C++ 标准中描述的名称定义(或访问)在哪里?
#include <iostream>
struct B;
struct A {
struct B;
};
struct A::B:A {
};
int main() {
A::B::A::B b;
std::cout<<"Sizeof A::B::A::B is " << sizeof(A::B::A::B)<<std::endl;
return 0;
}
【问题讨论】:
-
不需要首字母
struct B;。它不在代码中的任何地方使用。 -
@AnT 只是在这个翻译单元中没有使用它。但就这个例子而言,我认为没有其他翻译单元,并且很有可能操作可能有认为这是必须的。
-
@sjsam:即使
B在另一个翻译单元中使用,在这个TU中声明仍然是多余的。 -
命名空间 A 中的内部 B 作为 A 的子节点
标签: c++ struct syntax scope-resolution