[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