複数の継承は、プライベートメンバーがアクセス可能になります
-
21-12-2019 - |
質問
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を継承していてもコンパイルされています。だから私のコンパイラを混乱させるcの継承は?
コンパイラはGCC 4.4.7
です。解決
標準がそのようなアクセスを許可しないように、
ののように、本物のコンパイラのバグのように見えます。11.2基本クラスと基本クラスメンバのアクセシビリティ
標準自体の外での証拠を探している、誰がすでにCLANGがそのようなアクセスを許可していないwhozcraigは既に育った。
GCCで混同される可能性がある類似のパターンを探しているため、ほとんどのアクセスのパスがどの保護が適用されるかを決定するため、そのようなアクセスを許可したと仮想ベースクラスAを持つダイアロン継承があります。
所属していません StackOverflow