[C con Clase] Ayuda Problema de ejecución

Kenboggo kenboggo en yahoo.es
Mar Nov 23 16:40:25 CET 2010


Utilizo Dev-C++ y tengo tres archivos uno de cabecera .hpp con la definición de una clase y dos con código fuente .cpp, de los cuales uno contiene la declaración de los métodos de la clase y el otro el código fuente del programa principal (función main), los tres archivos a la hora de compilarlos NO dan ningún error.

El problema está al ejecutar el programa dado que los métodos de la clase hacen uso de la librería <cstring> y a la hora de crear un objeto el programa no ejecuta da un error obligando a cerrar la aplicación AppName: project1.exe AppVer: 0.0.0.0 ModName: msvcrt.dll ModVer: 7.0.2600.5512 Offset: 00037b19.

Si elimino las funciones de la librería <cstring> replanzandolas por instrucciones rudimentarias para comparar o copiar cadenas de caracteres no se cae la aplicación. En realidad no se cual es el problema que puede existir en relación con el Dev-C++.

-------------------
Archivo Usuario.hpp
-------------------
class Usuario
{
      private:
              char* loginCorrecto;
              char* passwordCorrecto;
              
      public:
             Usuario();
             ~Usuario();
             bool Validar(char* login, char* pass);
};

-------------------
Archivo Usuario.cpp
-------------------
#include <cstdlib>
#include <iostream>
#include <cstring>
#include "Usuario.hpp"


Usuario::Usuario()
{
  strcpy(loginCorrecto, "hola");
  strcpy(passwordCorrecto, "gente");
}

Usuario::~Usuario()
{
}

bool Usuario::Validar(char* login, char* pass)
{
  if (strcmp(loginCorrecto,login) != 0) 
     if (strcmp(passwordCorrecto, pass) != 0) 
        return true;
     else
        return false;
  else
      return false;
}

---------------------
Archivo Principal.cpp
---------------------
#include <cstdlib>
#include <iostream>
#include <cstring>
#include "Usuario.hpp"

using namespace std;

int main(int argc, char *argv[])
{
    char* log;
    char* pas;
   
    Usuario US1;
    
    cout << "Digite el login: ";
    cin >> log;
    cout << "Digite el password: ";
    cin >> pas;

    if (US1.Validar(log, pas))
       cout << "El login y password son correctos";
    else
       cout << "El login y password son incorrectos";    
       
    system("PAUSE");
    return EXIT_SUCCESS;
}


Más información sobre la lista de distribución Cconclase