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.

Cómo separar la definición y la implementación de un constructor de una clase derivada?

Me gustaría aprender cómo definir un constructor de una clase derivada en un archivo para poder implementarlo en otro archivo.

public:
Derived(std::string name) : Base(name) {}
~Derived();

El destructor funciona como se espera, sin embargo, con el constructor, si agrego {} al final (en lugar de un punto y coma), obtengo un error de “redefinición de ‘Derived'”, o se me pide agregar {} en lugar del punto y coma. ¿Cuál es la forma de separar la definición e implementación en este caso?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para separar la definición y la implementación del constructor de una clase derivada, puedes usar un archivo de encabezado (.h) para declarar el constructor y un archivo de implementación (.cpp) para definirlo. Aquí tienes un ejemplo:

    En “Derived.h”:

    “`c++
    #pragma once
    #include “Base.h”

    class Derived : public Base {
    public:
    Derived(std::string name);
    ~Derived();
    };


    En "Derived.cpp": ```c++ #include "Derived.h" Derived::Derived(std::string name) : Base(name) { // implementación del constructor } Derived::~Derived() { // implementación del destructor }

    Luego, en el archivo donde quieras usar el constructor de la clase derivada, incluye el archivo de encabezado “Derived.h” y crea una nueva instancia de la clase derivada como de costumbre:

    “`c++
    #include “Derived.h”

    int main() {
    Derived d(“ejemplo”); // crea una nueva instancia de Derived
    return 0;
    }
    “`

    Con este enfoque, puedes definir la implementación del constructor de forma separada de su declaración y mantener tu código organizado.

Comments are closed.