Доступ к члену экземпляра класса-брата - PullRequest
0 голосов
/ 04 октября 2018

Как правильно обращаться к c1 из Child2?

Чтобы получить некоторый контекст, представьте, что Child1 и Child2 являются текстовыми полями, и Child2 должен принять решение с текущим значением c1.member.Это всего лишь некоторый фиктивный код, который будет выглядеть более ясно:

class Parent
{
public:
    Parent()
    {

    }

    ~Parent()
    {

    }

    class Child1
    {
    private:
        int i;
    };

    class Child2
    {
        Child2()
        {
            // somehow access c1.i;
        }

    };

private:
    Child1 c1;
    Child2 c2;
};

1 Ответ

0 голосов
/ 05 октября 2018

После полезных комментариев, которые я получил по этому вопросу, вот разумное решение:

class Parent
{
public:
    class StepTwo;

    Parent():
        // we're initializing c2 here because it does not have a default
        // constructor.
        c2(c1)
    {

    }

    ~Parent()
    {

    }

    class Child1
    {
    private:
        int i;
        // Making Child2 a friend class, allows it to access access private
        // members of Child1.
        friend class Child2;
    };

    class Child2
    {
    public:
        Child2(Child1 &r_c1)
        {
            pC1 = &r_c1;

            // pC1 can access everything from Child1 with ease.
        }
    private:
        Child1* pC1;
    };

private:
    Child1 c1;
    Child2 c2;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...