none
separar interfaz de laimplementacion RRS feed

  • Pregunta

  • hola amigos estoy leyendo un libro "c++ como programar de deitel", buscando en internet me he hallado conque alguien ya hizo esta pregunta asi que copiare y pegare :) 

    Verán, estoy estudiando C++ en el libro "C++ Cómo Programar de Deitel", y me dice que cuando creo una archivo de encabezado (.h) con una clase es recomendable definir las funciones miembro de la clase en un archivo de código fuente separado. Entonces, quedo con 3 archivos, así:

    LibroCalificaciones.h

    Código:
    #include <string>
    using std::string;
    
    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(); // Muestra mensaje de bienvenida.
    private:
        string nombreCurso; // Nombre del curso para este LibroCalificaciones
    };
    


    LibroCalificaciones.cpp

    Código:
    // Función para obtener el nombre del curso.
    string LibroCalificaciones::obtenerNombreCurso()
    {
        return nombreCurso;
    }
    
    // Muestra un mensaje
    #include <iostream>
    
        using std::cout;
        using std::endl;
    
    #include "LibroCalificaciones.h"
    
    
    // El constructor inicializa nombreCurso con el objeto string suministrado como argumento.
    LibroCalificaciones::LibroCalificaciones(string nombre)
    {
        establecerNombreCurso(nombre); // Inicializa nombreCurso
    }
    
    // Función para establecer nombreCurso
    void LibroCalificaciones::establecerNombreCurso(string nombre)
    {
        nombreCurso = nombre; // Almacena el nombre del curso en el objeto.
    } de bienvenida.
    void LibroCalificaciones::mostrarMensaje()
    {
        cout << "Bienvenido al libro de calificaciones para\n" << obtenerNombreCurso()
            << "!" << endl;
    }
    

    Y por último, el programa cliente de la clase, Programa.cpp (soy bien creativo).

    Código:
    #include <iostream>
        using std::cout;
        using std::endl;
    
    #include "LibroCalificaciones.h"
    
    int main()
    {
        LibroCalificaciones libroCalificaciones1("CS101 Introduccion a C++");
        LibroCalificaciones libroCalificaciones2("CS102 Estructuras de Datos");
    
        cout << "libroCalificaciones1 creado para el curso: " << libroCalificaciones1.
            obtenerNombreCurso()
            << "\nlibroCalificaciones2 creado para el curso: " << libroCalificaciones2.
            obtenerNombreCurso() << endl;
    
        return 0;
    }

    Bueno, ahora mi problema es que el libro me dice que debo compilar primero LibroCalificaciones.cpp, para así obtener el código objeto

    1>LINK : fatal error LNK1561: se debe definir el punto de entrada o sea falta un codigo que tenga un main para que funcione, en esa pagina web la solucion para otro IDE fue 

    Para cumplir lo que te pide el ejercicio del libro, haz lo siguiente:

    Primero:

    Código:
    g++ -c LibroCalificaciones.cpp

    Segundo:

    Código:
    g++ -c Programa.cpp

    Y por ultimo:

    Código:
    g++ -o Programa LibroCalificaciones.o Programa.o

    mi pregunta es...comose hace en visualc++, cualquier ayuda es buena y se agradece 

    la pagina si es que la quieren ver es 


    todo problema tiene una solucion, sino no seria un problema seria algo inevitable

    sábado, 30 de marzo de 2013 21:51

Respuestas

Todas las respuestas