z***u 发帖数: 105 | 1 一个当地小公司,问题
class A
{...
private:
Foo;
...
}
class B
{
}
如何从B中只access Foo, 而不是A里其他的private变量?
不知道怎么做。请指点。 |
c*******n 发帖数: 442 | 2 给A加public的 getFoo 和 setFoo
【在 z***u 的大作中提到】 : 一个当地小公司,问题 : class A : {... : private: : Foo; : ... : } : class B : { : }
|
l********6 发帖数: 129 | |
g*******u 发帖数: 3948 | |
f*******r 发帖数: 976 | 5 friend可以访问说有的private成员变量,这题要求只能访问一个private成员变量
【在 g*******u 的大作中提到】 : 不是用friend?
|
z***u 发帖数: 105 | 6 看来我把题想复杂了。
【在 f*******r 的大作中提到】 : friend可以访问说有的private成员变量,这题要求只能访问一个private成员变量
|
p*u 发帖数: 2454 | 7 U need an inner class in A, which has a reference to Foo, and friend class B.
【在 z***u 的大作中提到】 : 一个当地小公司,问题 : class A : {... : private: : Foo; : ... : } : class B : { : }
|
l********6 发帖数: 129 | 8 高科技了~~
B.
【在 p*u 的大作中提到】 : U need an inner class in A, which has a reference to Foo, and friend class B.
|
b********n 发帖数: 609 | 9 按着思路写了一个,是work的。
"
#include
class A {
public:
class Adapter {
public:
Adapter(A& parent)
: ref(parent.a) {
}
private:
friend class B;
int& ref;
};
A() : a(0), i(*this) {
}
Adapter& getAdapter() {
return i;
}
int getNum() const {
return a;
}
private:
int a;
Adapter i;
};
class B {
public:
void changeNum(A& a, int x) {
A::Adapter& i = a.getAdapter();
i.ref = x;
}
};
int main() {
A a;
std::cout << "Original value: " << a.getNum() << std::endl;
B b;
b.changeNum(a, 10);
std::cout << "New value: " << a.getNum() << std::endl;
return 0;
}
"
【在 l********6 的大作中提到】 : 高科技了~~ : : B.
|
w********5 发帖数: 81 | |