M
Mr Dyl
There's probably a simple explanation for this and it's just too late
for my brain to work. Does anybody know a good reason why class B2
compiles but class B1 doesn't?
class A {
public:
class Nested_A {
protected:
A* ptrA;
};
protected:
int X;
};
class B1 : public A {
public:
class Nested_B : public Nested_A {
int foo() {return(ptrA->X);}
// error: protected member "A::X" is not accessible through a "A"
pointer or object
};
};
class B2 : public A {
public:
class Nested_B : public Nested_A {
int foo() {return(ptrB->X);} // Happy compiler
protected:
B* ptrB;
};
};
Thanks!!
for my brain to work. Does anybody know a good reason why class B2
compiles but class B1 doesn't?
class A {
public:
class Nested_A {
protected:
A* ptrA;
};
protected:
int X;
};
class B1 : public A {
public:
class Nested_B : public Nested_A {
int foo() {return(ptrA->X);}
// error: protected member "A::X" is not accessible through a "A"
pointer or object
};
};
class B2 : public A {
public:
class Nested_B : public Nested_A {
int foo() {return(ptrB->X);} // Happy compiler
protected:
B* ptrB;
};
};
Thanks!!