Я не мог придумать лучшую формулировку названия, так что это немного вводит в заблуждение, однако я не говорю о том, что ребенок получает доступ к своим переменным, унаследованным от его родителя, что достаточно просто.
То, о чем я говорю, это:
class Parent {
protected:
Parent *target;
int hp;
}
class Child : public Parent {
public:
void my_func();
}
void Child::my_func() {
target->hp -= 50;
}
Однако, если я попытаюсь скомпилировать это, он будет жаловаться на то, что "hp" является "приватным в этом контексте". Проблема в том, что ребенок не пытается получить доступ к своим родительским переменным, а к другому классу, который может быть или не быть самим ребенком.
Объект может получить доступ ко всем переменным и методам (общедоступным, защищенным или приватным) другого объекта (двух отдельных экземпляров в памяти), который относится к одному классу, поэтому я думал, что он будет работать и с этим, так как он наследует класс, переменные которого он пытается получить, но, похоже, я ошибался в этом.
Любые советы?
P.S. Не быть грубым или чем-то другим, но я знаю, что могу просто создать методы get() и set(), но я надеялся на более чистый способ.