Это может быть сделано с некоторым «поворотом».
Просто выведите метод a () из класса A в родительский класс, в котором B является классом-другом, и пусть A наследует его.это оставит a () как метод в A, но единственный закрытый метод, доступный другу его родителя B.
, вот очень простой код для пояснения того, что я сказал:
class parent
{
friend class B;
private:
void a() {}
};
class A:public parent
{
private:
void b() {}
void c() {}
};
class B
{
A* m_a;
public :
B()
{
m_a = new A();
m_a->a(); // OK
m_a->b(); // error C2248: 'A::b' : cannot access private member declared in class 'A'
}
};
надеюсь, это поможет!