3
我閱讀了以下聲明,我不確定它是否屬實,如果可以,請詳細說明一下。如何訪問子女的受保護變量
孩子有權訪問相同INSTANCE的基類 的相同成員變量。
我雖然現在的問題是如何訪問一個孩子
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
}
}
上面的代碼抱怨一個事實,即公元前變量被保護的受保護的變量。 我想fun1()在ChildofB檢索變量bc的子類ChildofA的實例。你如何去解決這個問題(沒有朋友的方法和get/setter)。
我不認爲你可以。根據定義,受保護的成員需要設置者或朋友方法。您只是試圖訪問一個受保護的成員,並且繼承在這個等式中並不重要。 – goelakash
如果你想從課堂外訪問,爲什麼要聲明'bc'' protected'? –
技術上(但不要這樣做!!)你可以聲明classof childofB是A類的一個朋友類(不是方法),而是重寫你的接口。 – T33C