Класс в классе и доступ к переменной
Вот есть такой простой условный класс:
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 шт):
Класс 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;
}
};
};