es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para referirse al vector nums en la clase derivada desde la clase padre sin sobrescribir la función addNum, puedes utilizar el operador de resolución de alcance (::) para especificar qué vector deseas modificar. En este caso, puedes especificar el vector nums de la clase derivada utilizando “Derived::nums” en lugar de simplemente “nums”:

    Derived d;
    d::nums.push_back(5);
    

    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.

Comments are closed.