#include<iostream>
using namespace std;
class uvw;
class abc{
private:
int privateMember;
protected:
int protMember;
public:
int publicMember;
};
class def : private abc{
public:
void dummy_fn();
};
class uvw: public def{
};
void def::dummy_fn()
{
abc x;
def y;
uvw z;
cout << z.protMember << endl; // This can be accessed and doesn't give a compile-error
}
私が理解していることdefから、 は から非公開で継承されabc、で非公開protMemberにpublicMemberなりdefます。したがって、 がuvwから継承された場合def、データ メンバーを持たないようにする必要があります。しかし、奇妙なことに、そもそもasが変数を持つべきではないz.protMemberからアクセスできます。私はどこか間違っていますか?dummy_fn()zprotMember