Доступ к закрытым членам структуры другого класса - PullRequest
0 голосов
/ 13 мая 2018

Привет, у меня возникли проблемы с пониманием ключевого слова друга из C ++

Допустим, у меня есть класс, как показано ниже:

class A
{
private:
    friend class B;
    struct Astruct
    {
        int funVar = 1;
    };
    Astruct myStruct
public:
    changeAStruct(); // changes the value of funVar to 2
};

class B
{
    //how do i here get access to myStruct with the value 2?
};

Надеюсь, приведенный выше псевдокод покажет вам мою проблему. Мне нужен тот же экземпляр myStruct, чтобы при использовании указателя this я попадал в класс A в классе B. Как этого добиться?

Чего я не хочу, так это набирать это в классе B:

A::Astruct myStruct

Поскольку это создаст новую структуру в классе B с funVar, установленным в 1. Я хочу такую ​​же структуру в классе A, но теперь в классе B ...

РЕДАКТИРОВАТЬ: я предполагаю, что из основного я могу отправить myStruct в класс B в качестве ссылки и получить к нему доступ оттуда. Это оптимальная вещь?

1 Ответ

0 голосов
/ 13 мая 2018

Я не уверен, что понимаю, что вы хотите, но вы могли бы сделать что-то подобное:

class A
{
private:
    friend class B;
    struct Astruct
    {
        int funVar = 1;
    };
    Astruct myStruct;
};

class B
{
public:
    int getFunVar(A &a)
    {
        return a.myStruct.funVar;
    }
};
...