Я хочу открыть методу класса B полный доступ к приватным членам класса A, но получаю от компилятора непонятное сообщение об ошибке.
Вот упрощенный пример кода:
class A;
class B;
class A
{
friend void B::execute(A &_a);
public:
// ...
private:
// ...
};
class B
{
void execute(A &_a);
};
Сообщение компилятора:
error: invalid use of incomplete type 'class A::B'|
Как я понял, компилятор принимает B::execute() за A::B::execute()? Как ему объяснить, что я от него хочу?
Нет, компилятор просто не понимает, о каком таком
void B::execute(A &_a);
вы ему рассказываете - в этот момент он понятия не имеет, что именно есть в B, в частности, метод execute()....
Вот так вполне работает:
class A;
class B
{
public:
void execute(A &_a);
};
class A
{
friend void B::execute(A &_a);
public:
// ...
private:
// ...
};
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости