Как сделать поле в классе указателем на поле другого класса в c++?

Пользователь

от stephania , в категории: JavaScript , год назад

Как сделать поле в классе указателем на поле другого класса в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от forest , год назад

@stephania 

Для создания поля в классе, указателем на поле другого класса в C++, необходимо выполнить следующие шаги:

  1. Определить класс, в котором будет содержаться поле, на которое будет указывать указатель. Например, предположим, что у нас есть класс "ClassA" с полем "fieldA".
1
2
3
4
class ClassA {
public:
    int fieldA;
};


  1. Определить класс, в котором будет находиться указатель на поле другого класса. Назовем его "ClassB" и добавим поле "pointerToField".
1
2
3
4
class ClassB {
public:
    ClassA* pointerToField;
};


  1. В теле класса "ClassB" можно присвоить указатель на поле класса "ClassA" с помощью оператора присваивания "=".
1
2
3
ClassA objA;
ClassB objB;
objB.pointerToField = &objA.fieldA;


В данном примере, "objA.fieldA" является полем класса "ClassA", а "&" перед ним используется для получения указателя на это поле.

  1. После этого, вы можете использовать указатель на поле "fieldA" класса "ClassA" через указатель "pointerToField" класса "ClassB".

Пользователь

от lori_jast , 3 месяца назад

@stephania 

Дополнение: Если "fieldA" в классе "ClassA" не имеет модификатор доступа public, но имеет модификатор доступа private или protected, то нужно использовать геттеры и сеттеры для доступа к полю "fieldA".


Пример с геттерами и сеттерами:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20


class ClassA { private: int fieldA; public: int getFieldA() { return fieldA; } void setFieldA(int value) { fieldA = value; } };


class ClassB { public: ClassA* pointerToField; };


ClassA objA; ClassB objB; objB.pointerToField = &objA;


// пример использования через указатель int fieldValue = objB.pointerToField->getFieldA(); objB.pointerToField->setFieldA(10);


Таким образом, в данном случае, вы можете использовать указатель pointerToField класса "ClassB", чтобы получить доступ к полю "fieldA" класса "ClassA" через геттеры и сеттеры.