例如,
class B {
int* b1;
int* b2;
B(int* x, int* y) {
b1 = x;
b2 = y;
}
};
class A {
int* a1;
int* a2;
B* b1;
public:
A() {
a1 = new int;
a2 = new int;
b1 = new B1(a1, b1);
}
};
我想从A类和A类的对象中访问a1和a2指向的值。 B.我应该为它编写函数,以便A的对象和B的对象可以调用这个函数吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
在这个特殊的上下文中,您只传递指针,因此a1
和a2
指向的对象是b1
和{{1}指向的对象}}。另一方面,b2
对象知道它包含的A
,但B
的实例不知道是否包含在B
中。
因此,我认为操纵指向对象的函数应该在A
类中声明。然后,如果B的存在是A的公共API的成员(例如,使用getter)就足够了:
B
如果class B {
...
void do_something(...) {
// do something with objects pointed by b1 and b2
}
};
...
A a;
a.getB()->do_something();
...
的{{1}}成员是实施细节,您应该在A中声明一个中继方法:
B