Accede al miembro derivado en lugar del miembro base con el mismo nombre en la clase derivada.
Supongamos que tengo dos clases:
class Base
{
private:
std::vector<int> nums;
public:
virtual void addNum(int num){
nums.push_back(num);
}
};
class Derived : public Base
{
private:
std::vector<int> nums;
};
Cuando uso la clase derivada e intento añadir números a su propio vector nums, probablemente esté haciendo referencia al vector de la clase base en lugar del vector de la clase derivada.
¿Cómo puedo hacer referencia al vector nums en la clase derivada desde la clase padre sin sobrescribir la función addNum?
davy.ai
Para referirse al vector
nums
en la clase derivada desde la clase padre sin sobrescribir la funciónaddNum
, puedes utilizar el operador de resolución de alcance (::) para especificar qué vector deseas modificar. En este caso, puedes especificar el vectornums
de la clase derivada utilizando “Derived::nums” en lugar de simplemente “nums”:Esto agregará el número 5 al vector
nums
en la clase derivada en lugar del vector en la clase base. Sin embargo, ten en cuenta que tener dos variables con el mismo nombre en la clase base y la clase derivada puede llevar a confusión y posibles errores, por lo que puede ser mejor evitar esta situación por completo dándole nombres diferentes a las variables o replanteando el diseño de la clase.