就像我有一些课程一样
class B {
public:
int a;
};
class C {
B reference;
}
B Test;
C Test2;
C.reference = Test;
B.a = 2;
现在我还需要从 C.reference.a 获得 2
像这样:
class C {
public:
B& reference; // notice use of '&' to denote a reference
C(B& ref) : reference(ref)
{
}
};
它会像这样使用:
C Test2 = C(Test);
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
当然,您仍然可以提供自己的。如果您希望能够重新分配引用,那么您可以使用指针,您可能应该将其设为私有并使用访问器来读取和修改数据。