是在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.

10-07 16:38