Класс в классе и доступ к переменной

Вот есть такой простой условный класс:

class my_class
{
 
public:
 
 
    void my_func()
    {
        std::cout << "Hello" << std::endl;
    }
 
 
private: //-------------------------------------->
 
    int my_int;
 
 
 
    class my_private_class
    {
 
    public:
 
        void my_func_private()
        {
            std::cout << my_int << std::endl;
        }
 
    };
 
};

Хотелось бы получить доступ к переменной my_int внутри созданного класса my_private_class, но VS2019 выдает ошибку:

нестатическая ссылка на член должна указывается относительно заданного объекта

Подскажите, можно ли как то все таки получить доступ к my_int из класса my_private_class ?


Ответы (1 шт):

Автор решения: LShadow77

Класс my_private_class - это тип данных, формально включённый в класс my_class, однако это всё равно другой класс. И, соответственно, для того, чтобы получить доступ к полю my_int класса my_class из функции-члена класса my_class::my_private_class, вы должны как-нибудь передать этой функции ссылку на конкретный экземпляр класса my_class. Например так:

class my_class
{
 
public:
 
 
    void my_func()
    {
        std::cout << "Hello" << std::endl;
    }
 
 
private: //-------------------------------------->
 
    int my_int;
 
 
 
    class my_private_class
    {
 
    public:
 
        void my_func_private(my_class & MyCls) //передаём ссылку на объект типа my_class
        {
            std::cout << MyCls.my_int << std::endl;
        }
 
    };
 
};
→ Ссылка