Ayuda, me aparecen errores al compilar

Iniciado por anywombay454, 22 Enero 2017, 19:03 PM

0 Miembros y 1 Visitante están viendo este tema.

anywombay454

Código (cpp) [Seleccionar]
// Fig. 3.10: fig03_10.cpp
// Inclusión de la clase LibroCalificaciones del archivo LibroCalificaciones.h para usarla en main.
#include <iostream>
using std::cout;
using std::endl;

#include "LibroCalificaciones.h" // incluye la definición de la clase LibroCalificaciones

// la función main empieza la ejecución del programa
int main()
{
// crea dos objetos LibroCalificaciones
LibroCalificaciones libroCalificaciones1( "CS101 Introduccion a la programacion en C++" );
LibroCalificaciones libroCalificaciones2( "CS102 Estructuras de datos en C++" );

// muestra el valor inicial de nombreCurso para cada LibroCalificaciones
cout << "libroCalificaciones1 creado para el curso: " << libroCalificaciones1.obtenerNombreCurso()
<< "\nlibroCalificaciones2 creado para el curso: " <<  libroCalificaciones2.obtenerNombreCurso()
<< endl;
return 0; // indica que terminó correctamente
} // fin de main


 // Fig. 3.9: LibroCalificaciones.h
// Definición de la clase LibroCalificaciones en un archivo separado de main.
#include <iostream>
using std::cout;
using std::endl;

#include <string> // la clase LibroCalificaciones utiliza la clase string estándar de C++
using std::string;

// definición de la clase LibroCalificaciones
class LibroCalificaciones
{
public:
// el constructor inicializa nombreCurso con la cadena que se suministra como argumento
LibroCalificaciones( string nombre )
{
establecerNombreCurso( nombre ); // llama a la función establecer para inicializarnombreCurso
} // fin del constructor de LibroCalificaciones

// función para establecer el nombre del curso
void establecerNombreCurso( string nombre )
{
 nombreCurso = nombre; // almacena el nombre del curso en el objeto
} // fin de la función establecerNombreCurso

// función para obtener el nombre del curso
string obtenerNombreCurso()
{
return nombreCurso; // devuelve el nombreCurso del objeto
} // fin de la función obtenerNombreCurso

// muestra un mensaje de bienvenida al usuario de LibroCalificaciones
void mostrarMensaje()
{
// llama a obtenerNombreCurso para obtener el nombreCurso
cout << "Bienvenido al libro de calificaciones para\n" << obtenerNombreCurso()
<< "!" << endl;
} // fin de la función mostrarMensaje
private:
string nombreCurso; // nombre del curso para este LibroCalificaciones
}; // fin de la clase LibroCalificaciones



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

anywombay454

#1
el código anterior me compila y se ejecuta bien pero cuando cambio cuando oculto la implementación de de la interfaz de la clase  como aquí:


Código (cpp) [Seleccionar]
// Fig. 3.13: fig03_13.cpp
// Demostración de la clase LibroCalificaciones después de separar
// su interfaz de su implementación.
#include <iostream>
using std::cout;
using std::endl;

#include "LibroCalificaciones.h" // incluye la definición de la clase LibroCalificaciones

// la función main empieza la ejecución del programa
int main()
{
// crea dos objetos LibroCalificaciones
LibroCalificaciones libroCalificaciones1( "CS101 Introduccion a la programacion en C++" );
LibroCalificaciones libroCalificaciones2( "CS102 Estructuras de datos en C++" );

// muestra el valor inicial de courseName para cada LibroCalificaciones
cout << "libroCalificaciones1 creado para el curso: " << libroCalificaciones1.obtenerNombreCurso()
<< "\nlibroCalificaciones2 creado para el curso: " << libroCalificaciones2.obtenerNombreCurso()
<< endl;
return 0; // indica que terminó correctamente
}

luego en otro archivo:

// Fig. 3.12: LibroCalificaciones.cpp
// Definiciones de las funciones miembro de LibroCalificaciones. Este archivo contiene
// implementaciones de las funciones miembro cuyo prototipo está en LibroCalificaciones.h.
#include <iostream>
using std::cout;
using std::endl;

#include "LibroCalificaciones.h" // incluye la definición de la clase LibroCalificaciones

// el constructor inicializa nombreCurso con el objeto string suministrado como argumento
LibroCalificaciones::LibroCalificaciones( string nombre )
{
establecerNombreCurso( nombre ); // llama a la función establecer para inicializar nombreCurso
} // fin del constructor de LibroCalificaciones

// función para establecer el nombre del curso
void LibroCalificaciones::establecerNombreCurso( string nombre )
{
nombreCurso = nombre; // almacena el nombre del curso en el objeto
} // fin de la función establecerNombreCurso

// función para obtener el nombre del curso
string LibroCalificaciones::obtenerNombreCurso()
{
return nombreCurso; // devuelve el nombreCurso del objeto
} // fin de la función obtenerNombreCurso

// muestra un mensaje de bienvenida al usuario de LibroCalificaciones1
void LibroCalificaciones::mostrarMensaje()
{
// llama a obtenerNombreCurso para obtener el nombreCurso
cout << "Bienvenido al libro de calificaciones para\n" << obtenerNombreCurso()
<< "!" << endl;
} // fin de la función mostrarMensaje

luego en otro archivo:

// Fig. 3.11: LibroCalificaciones.h
// Definición de la clase LibroCalificaciones. Este archivo presenta la interfaz
// public de LibroCalificaciones sin revelar las implementaciones de sus funciones
// miembro, que están definidas en LibroCalificaciones.cpp.
#include <string> // la clase LibroCalificaciones utiliza la clase string estándar de C++
using std::string;

// definición de la clase LibroCalificaciones
class LibroCalificaciones
{
public:
LibroCalificaciones( string ); // constructor que inicializa a nombreCurso
void establecerNombreCurso( string ); // función que establece el nombre del curso
string obtenerNombreCurso(); // función que obtiene el nombre del curso
void mostrarMensaje(); // función que muestra un mensaje de bienvenida
private:
string nombreCurso; // nombre del curso para este LibroCalificaciones
};


me aparecen estos errores:

CitarC:\Users\levis\AppData\Local\Temp\ccJtBm2S.o   fig03_13.cpp:(.text+0x84): undefined reference to `LibroCalificaciones::LibroCalificaciones(std::string)'

C:\Users\levis\AppData\Local\Temp\ccJtBm2S.o   fig03_13.cpp:(.text+0xe5): undefined reference to `LibroCalificaciones::LibroCalificaciones(std::string)'

C:\Users\levis\AppData\Local\Temp\ccJtBm2S.o   fig03_13.cpp:(.text+0x11a): undefined reference to `LibroCalificaciones::obtenerNombreCurso()'

C:\Users\levis\AppData\Local\Temp\ccJtBm2S.o   fig03_13.cpp:(.text+0x134): undefined reference to `LibroCalificaciones::obtenerNombreCurso()'

C:\Users\levis\Downloads\c++\librocali_clasecli_definiclaseinterfaz_implementacion_FALLO\collect2.exe   [Error] ld returned 1 exit status

alguien que me ayude por favor!


· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex