0

次のようなクラスがある場合のように

class B {
public:
    int a;
};

class C {
    B reference;
}

B Test;
C Test2;

C.reference = Test;

B.a = 2;

そして今、私は C.reference.a からも 2 を取得する必要があります

4

2 に答える 2

2

このような:

class C {
public:
    B& reference; // notice use of '&' to denote a reference

    C(B& ref) : reference(ref)
    {
    }
};

そしてそれはこのように使用されます:

C Test2 = C(Test);
于 2012-05-17T14:25:40.953 に答える
1
class C {
public:
    C(B & ref)
        :reference(ref)
    {}

    B & reference;
};

B Test;
C Test2(Test);

参照メンバーがある場合、コンパイラーは代入演算子を生成しないため、これを行うことはできないことに注意してください。

B b1, b2;
C c1(b1), c2(b2);
c1 = c2; // can't do this

もちろん、あなたはまだあなた自身を提供することができます。参照を再割り当てできるようにする場合は、ポインターを使用できます。おそらく、ポインターを非公開にし、アクセサーを使用してデータを読み取って変更する必要があります。

于 2012-05-17T14:24:26.337 に答える