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.

Tengo un problema al intentar inicializar una función en una estructura de C++.

Estoy intentando inicializar Date, tal vez olvidé algo al respecto. Sigo el libro de Bjarne Stroustrup, pero no puedo ejecutar este código.

#include <iostream>

using namespace std;

struct Date
{
    int y, m, d;               // año, mes, día
    Date(int y, int m, int d); // verificar validez e inicializar
    void add_day(int n);       // aumentar la fecha en n días
};

int main()
{
    Date today(2021, 1, 6);

    return 0;
}

Aquí está el error que no sé cómo solucionar probablemente:

undefined reference to `Date::Date(int, int, int)'
collect2.exe: error: ld returned 1 exit status

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error que estás viendo es un error de enlace, lo que significa que el compilador no puede encontrar la implementación del constructor Date. Esto se debe a que has declarado el constructor Date, pero no lo has definido.

    Para solucionar este error, necesitas definir el constructor Date fuera de la definición de la estructura struct. Aquí tienes un ejemplo de implementación del constructor:

    Date::Date(int y, int m, int d)
    {
        // revisa si es válido e inicializa
        // ...
    }
    

    Coloca esta implementación después de la definición de la estructura struct y antes de la función main, y el error de enlace debería resolverse.

Comments are closed.