10
class A {
    public:
            int a;
};

class B: private A {
};

class C: public A {
};

class D: public B, public C {
        D() {
                B::a = 0;
        }
};

これは、B が非公開で A を継承していてもコンパイルされます。D の C の継承を削除すると、予想どおり、コンパイラは a にアクセスできないと言います。C の継承は私のコンパイラを混乱させますか?

コンパイラは gcc 4.4.7

4

1 に答える 1