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 回答