No pude pensar en una mejor redacción para el título, por lo que es un poco engañoso, sin embargo, no estoy hablando de que un niño acceda a sus variables heredadas de su padre, lo cual es bastante fácil.Accediendo a las variables protegidas padre
Lo que estoy hablando es la siguiente:
class Parent {
protected:
Parent *target;
int hp;
}
class Child : public Parent {
public:
void my_func();
}
void Child::my_func() {
target->hp -= 50;
}
Sin embargo, si intento compilar esto, se quejan de 'HP' ser "privada en este contexto". El problema es que el niño no intenta acceder a las variables de su propio padre, sino a alguna otra clase ', que puede o no ser un Niño.
Un objeto puede acceder a todas las variables y métodos (públicos, protegidos o privados) de otro objeto (dos instancias separadas en la memoria) que es de la misma clase, así que pensé que funcionaría con esto también, ya que hereda de la clase cuyas variables está intentando acceder, pero parece que estaba equivocado al asumirlo.
¿Algún consejo?
P.S. No es grosero ni nada, pero sé que puedo crear métodos get() y set(), pero esperaba una manera más limpia.
Existen numerosos errores en el código tal como se escriben aquí (palabra clave 'class' incorrectamente en mayúsculas, sintaxis de herencia incorrecta, etc.) que estoy seguro son errores tipográficos que no están en el código original. Puede ser útil obtener un ejemplo mínimo que no se puede compilar, luego copiar y pegar el código exacto aquí. –
@Tim Pensé que estarías conversando contigo mismo por un minuto allí, hasta que comparara los perfiles –
Sí, debería hacer algo al respecto. No es tan único de un nombre como yo pensaba. :-) –