私はタイトルのより良い言葉遣いを考えることができませんでしたので、少し誤解を招いていますが、私は親から継承した変数にアクセスする子供について話しているわけではありません。私はこれをコンパイルしようとした場合親の保護された変数へのアクセス
class Parent {
protected:
Parent *target;
int hp;
}
class Child : public Parent {
public:
void my_func();
}
void Child::my_func() {
target->hp -= 50;
}
しかし、それは「この文脈でプライベート」である「HP」に文句を言うだろう:私が何を言っているか
はこれです。問題は、子が自身の親の変数にアクセスしようとしていないが、他のいくつかのクラス 'であり、子自体であってもなくてもよい。
オブジェクトは、同じクラスの別のオブジェクト(メモリ内の2つの別々のインスタンス)のすべての変数とメソッド(public、protected、またはprivate)にアクセスできるため、これも同様に動作すると思っていました。それはそれがアクセスしようとしているクラスのクラスから継承するので、私はそう仮定して間違っていたようです。
ヒント?
P.S.無礼なことではないですが、私はget()とset()メソッドを作成することができますが、私はよりクリーンな方法を望んでいました。
ここに書かれているように(元々は誤って大文字にされた 'class'キーワード、不正な継承構文など)、多くのエラーがあります。コンパイルに失敗した最小限の例を得て、ここに正確なコードをコピーして貼り付けると便利です。 –
@Tim私は、プロフィールを比較するまで、あなたが1分間自分と会話していると思った。 –
ええ、私はそれについて何かしなければならない。私は思ったほどユニークではありません。 :-) –