• Domingo 15 de Diciembre de 2024, 06:33

Autor Tema:  Problemas Compilando Código C++ En Compilador G++  (Leído 1508 veces)

TxD

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Problemas Compilando Código C++ En Compilador G++
« en: Martes 8 de Agosto de 2006, 18:49 »
0
Hola!

Estoy empezando con el Lenguaje de Programación c++, y compilando un ejemplo de un libro que estoy siguiendo, obtengo un error, el cuál no soy capaz de solucionar por mí mismo.

Estoy usando el compilador G++ (soy usuario de GNU/LiNUX) y el código es este:

Citar
#include <iostream>
#include <string>
using namespace std;

/* Clase de Objetos CCuenta
 *  Atributos:
 *     nombre, cuenta, saldo y tipo de interés
 *  Métodos:
 *     asignar/obtener nombre
 *     asignar/obtener cuenta
 *     estado de la cuenta (saldo)
 *     ingreso
 *     reintegro
 *     asignar/obtener tipo de interés
 */

class CCuenta {
   //Atributosa
   private:
  string nombre;
  string cuenta;
  double saldo;
  double tipoDeInteres;

   //Métodos
   public:
  void asignarNombre(string nom)
  {
     if (nom.length() == 0)
     {
    cout << "Error: cadena vacía\n";
    return;
     }
     nombre = nom;
  }

  string obtenerNombre()
  {
     return nombre;
  }

  void asignarCuenta(string cue)
  {
     if (cue.length() == 0)
     {
    cout << "Error: cadena vacía\n";
    return;
     }
     cuenta = cue;
  }

  string obtenerCuenta()
  {
     return cuenta;
  }

  double estado()
  {
     return saldo;
  }

  void ingreso(double cantidad)
  {
     if (cantidad < 0)
     {
    cout << "Error: cantidad negativa\n";
    return;
     }
     saldo = saldo + cantidad;
  }

  void reintegro(double cantidad)
  {
     if (saldo - cantidad < 0)
     {
    cout << "Error: Saldo no disponible\n";
    return;
     }
     saldo = saldo - cantidad;
  }

  void asignarTipoDeInteres(double tipo)
  {
     if (tipo < 0)
     {
    cout << "Error: tipo no válido\n";
    return;
     }
     tipoDeInteres = tipo;
  }

  double obtenerTipoDeInteres()
  {
     return tipoDeInteres;
  }

}; //end class CCuenta


Como podéis ver, sólo es una clase en el que defino unos atributos y unos métodos.  Vamos, una simplez como una casa.

El error que me da el compilador es este:
Citar
lempicka$ g++ -o TestCCuenta TestCCuenta.cpp
/usr/lib/gcc/i486-linux-gnu/4.0.4/../../../../lib/crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status
lempicka$

Lo que yo entiendo de ahí, es que el error tiene que ver con que no este la función main. Pero esto debería de funcionar sin necesidad de que el código contenga la función main, verdad?

Bueno, a ver si alguién me ilumina un poco sobre este error.

Un saludo y muchas gracias  :)

TxD

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Problemas Compilando Código C++ En Compilador G++
« Respuesta #1 en: Martes 8 de Agosto de 2006, 21:30 »
0
Hola de nuevo :)

Creo que ya me dí cuenta, de que solté una burrada como un templo.

con la bandera -o le digo al compilador, que compile el fichero fuente TestCCuenta.cpp y que luego haga el proceso de linkado con las librerías necesarías, para crear posteriormente un ejecutable con el nombre de TestCCuenta.

Todo programa en c/c++, debe de tener un main, que la función que marca el inicio y el fín del programa. Una cosa es compilar (verificar la sintaxis) un código, y otra muy distinta es querer generar un ejecutable de un código que no tiene un main.

Supongo que si le pasamos esta bandera al compilador

g++ -c TestCCuenta.cpp, esto compilaría el código y generaría un fichero binario .o.

Pues despues de darles vuelta a  las neuronas sobre esto y leer por ahí, creo que es así, si no lo es, por favor, corregirme.

Un saludo

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problemas Compilando Código C++ En Compilador G++
« Respuesta #2 en: Miércoles 9 de Agosto de 2006, 05:19 »
0
Estás en lo correcto, el parámetro -c le indica a g++ que compile, pero sin realizar el enlazado. Al enlazar, debe existir la función main() que es el punto de entrada al programa.

Dale un vistazo a algunas opciones que puedes pasar gcc/g++ tecleando:

Citar
g++ --help

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip