:
class B {
protected:
int i;
static int j;
};
class D1 : public B {
};
class D2 : public B {
friend void fr(B*,D1*,D2*);
void mem(B*,D1*);
};
void fr(B* pb, D1* p1, D2* p2) {
pb->i = 1;
p1->i = 2;
p2->i = 3;
p2->B::i = 4;
int B::* pmi_B = &B::i;
int B::* pmi_B2 = &D2::i;
B::j = 5;
D2::j = 6;
}
void D2::mem(B* pb, D1* p1) {
pb->i = 1;
p1->i = 2;
i = 3;
B::i = 4;
int B::* pmi_B = &B::i;
int B::* pmi_B2 = &D2::i;
j = 5;
B::j = 6;
}
void g(B* pb, D1* p1, D2* p2) {
pb->i = 1;
p1->i = 2;
p2->i = 3;
}
—
end example