Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/08/2015, 01:45
godeffuffeff
 
Fecha de Ingreso: agosto-2015
Mensajes: 10
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta Problema - No encuentro solucion - Separar interfaz de la implementacion - Deitel

Buenas.
Soy nuevo en esto de la programacion, ya intente buscar soluciones en otros lados, pero las respuestas son muy muy tecnicas o muy vagas.
quisiera saber si alguien podria compartir algo de su conocimiento con migo.
Estuve leyendo en otros foros y aqui mismo incluso pero las unicas respuestas que encontre fueron crear main , crear winmain o usar windows.h y otras que se metian con los ajustes del compilador pero ninguna funciono.

Para darles un ejemplo de las respuestas que encontre :
http://www.forosdelweb.com/f96/problema-con-definir-las-funciones-miembro-clase-cpp-separado-966134/
Vaya respuesta, no creen?


Tengo tiempo leyendo el libro de dietel "c++11 como programar" y estoy atorado en un tema del libro , para se exacto el capitulo 3 , tema 3.7 (si, lose... que novato.).
El problema se me da a la hora de compilar la clase LibroCalificaciones.

Uso Code::blocks y Dev C++ con MinGW (dudo que cambiando de IDE se solucione algo, pero bueno... ustedes son los expertos), y en ambos me aparece el mismo error "Undefined reference to WinMain@16".
(En gnu/linux ubuntu con g++ si puedo compilar la clase, solo la clase, pero de momento me quiero centrar en windows.)

Si intento compilar el codigo cliente (main) me paracesen estos errores,

undefined reference to `LibroCalificaciones::LibroCalificaciones(std::str ing)'
undefined reference to `LibroCalificaciones::LibroCalificaciones(std::str ing)'
undefined reference to `LibroCalificaciones::obtenerNombreCurso()'
undefined reference to `LibroCalificaciones::obtenerNombreCurso()'

Este es mi codigo.

LibroCalificaciones.h
Código:
class LibroCalificaciones
{
public:
    explicit LibroCalificaciones (std::string); nombreCurso
    void establecerNombreCurso (std::string); 
    std::string obtenerNombreCurso() const; 
    void mostrarMensaje() const;
private:
    std::string nombreCurso; 
};

LibroCalificaciones.cpp
Código:
#include<iostream>
#include"LibroCalificaciones.h" 


LibroCalificaciones::LibroCalificaciones(string nombre)
: nombreCurso (nombre)
{
    
} 

void LibroCalificaciones::establecerNombreCurso(string nombre)
{
    nombreCurso = nombre;

string LibroCalificaciones::obtenerNombreCurso() const
{
    return nombreCurso;
}

void LibroCalificaciones::mostrarMensaje() const
{
    cout<<"Bienvenido al libro de calificaciones para :\n" <<obtenerNombreCurso()
    <<"!" <<endl;
}
main LibroCalificaciones.cpp
Código:
#include<iostream>
#include"LibroCalificaciones.h" 
using namespace std;

int main ()
{
    LibroCalificaciones libroCalificaciones1 ("CS101 introduccion a la programacion   
    en C++");
    LibroCalificaciones libroCalificaciones2 ("CS102 estructura de datos en C++");

    cout<<"LibroCalificaciones1 creado para el curso : " 
   <<libroCalificaciones1.obtenerNombreCurso()
   <<"\nLibroCalificaciones2 creado para el curso : " 
   <<libroCalificaciones2.obtenerNombreCurso()
   <<endl;
}