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?
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();
};
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.