是在C++中继承的结构的属性吗
例如:
struct A {
int a;
int b;
}__attribute__((__packed__));
struct B : A {
list<int> l;
};
结构B(结构A)的继承部分是否继承了packed属性?
我不能在没有得到编译器警告的情况下向结构B添加属性(((packed ))
ignoring packed attribute because of unpacked non-POD field
因此,我知道不会打包整个结构B,这在我的用例中很好,但是我需要将结构A的字段打包在结构B中。
最佳答案
是的,A
的成员将打包在struct B
中。一定是这种方式,否则会破坏整个继承点。例如:
std::vector<A*> va;
A a;
B b;
va.push_back(&a);
vb.push_back(&b);
// loop through va and operate on the elements. All elements must have the same type and behave like pointers to A.