다음 문장을 읽었습니다. 사실인지 잘 모르겠습니다. 예를 들어 설명해주십시오.자녀의 보호 된 변수에 액세스하는 방법
자식은 기본 클래스 의 동일한 멤버 변수에 동일한 액세스 권한을 갖습니다.
그래도 난이 문제는 아이
class A
{
private:
class B* myBclass;
protected:
int bc;
}
class ChildofA : public A
{
public:
childofA() {};
}
class B
{
public :
B() {};
virtual void fun1(A* anA);
}
class childofB : public B
{
public :
void fun1(A* anA)
{
anA.bc=1; << Problem here
}
}
위의 코드가 변수 BC가 보호된다는 사실에 대해 불평의 보호 변수에 액세스하는 방법입니다. ChildofB에서 fun1()을 사용하여 Child 클래스 Child 클래스의 인스턴스에 대한 bc 변수를 검색하고 싶습니다. 이 문제를 어떻게 해결할 것인가? (친구와 getter/setter없이).
나는 그렇게 생각하지 않는다. 정의에 따라 보호 된 구성원은 설정자 또는 친구 메소드가 필요합니다. 당신은 단순히 보호 된 멤버에 액세스하려고 시도하고 있으며 상속은이 방정식에서는 중요하지 않습니다. – goelakash
클래스 외부에서 접근하려면'bc'를'protected'로 선언해야하는 이유는 무엇입니까? –
기술적으로 (그러나 이것을하지 마십시오 !!) 클래스 A의 friend 클래스 (메소드는 아님)를 childofB 클래스로 선언 할 수 있습니다. 대신 인터페이스를 재 작업하십시오. – T33C