elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Programación C/C++ / Re: Undefined reference to (C++) en: 30 Octubre 2017, 12:31 pm
Estoy usando devc++, y no me manejo muy bien osea que igual algo del linker está fallando que no entiendo. Y no he probado eso que dices, no se me había ocurrido, probaré a ver, gracias.
12  Programación / Programación C/C++ / Undefined reference to (C++) [SOLUCIONADO] en: 30 Octubre 2017, 11:40 am
Buenas,
 
yo había hecho un proyecto con 3 clases, menu.cpp y otras dos clases. Mi error fue escribir todo el código de las otras dos clases en un fichero .h y no separar los ficheros.
 
Bien, fui a separar los ficheros en cabeceras y tal, las declaraciones en .hpp y el codigo en .cpp, y al pasarlo todo, no me da ningún fallo excepto en el menu.cpp donde me salta un "undefined reference" a todas las funciones que he separado en ficheros. Y me estoy volviendo loco porque no se como hacer que funcione. Se que les declaraciones y eso están bien, pero ya no se que más falla. Intenté solucionarlo poniendo #pragma once pero nada sigue igual. A ver si algún alma muy caritativa me ayuda, o al menos me explica que puede estar pasando.
 
Venga, dejo el código fuente aquí en spoiler por si alguien es mu majete y le echa un vistazo
 
Código:
NFA.hpp
 
#pragma once
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include "estado.hpp"
#include <set>
#include <string>
 
using namespace std;
 
class nfa
{ vector <ESTADO> vectorestado;
  int numeroestados;
  set <char> alfabeto;
  set <int> importantes;
  int estadoinicial;
 
 
public:
 
void llenar_datos(char nombrefichero[], bool& errorapertura);
void mostrar();
void crearalfabeto(int numeroenlaces);
void analizarmuerte ();
void mostraralfabeto();
void estadosimportantes();
bool comprobacionestadodfa();
bool analizarletra (string cadena, int estado, int &camino,
                    vector<int> &estadoactual,vector <char> &simbolo, vector <int> &estadosiguiente);
  void analizarcadena();
 
};

ESTADO.hpp
 
Código:
#pragma once
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
 
using namespace std;
 

class ESTADO
{struct siguienteestado_t
     {char simbolotransicion;
      int siguienteestado;
     };
 
      bool aceptacion;
      bool estadomuerto;
      vector <siguienteestado_t> transicion;
 
public:
 
void crearenlace (int numeroenlaces);
    void   set_sigestado (int estado, char simbolo, int pos);
int    get_sigestado(int pos) const;
    char   get_simbolo(int pos) const;
    bool   get_aceptacion(void) const;
    void   set_aceptacion(bool aceptado);
    bool   get_muerto(void) const;
    bool   nodomuerto(int identificador);
    int get_numeroenlaces(void) const;
};

MENU.cpp
 
 
Código:
#include "nfa.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
int main()
{ int opcion;
  char fichero[85];
  bool errorapertura; // 0 si se abrio el fichero, en otro caso, no se abrio
  nfa automata;
 
  do{ cout << endl;
  cout << "SELECCIONE UNA OPCION :" << endl;
  cout << "[1] Leer un archivo .nfa." << endl;
  cout << "[2] Mostrar NFA." << endl;
  cout << "[3] Señalizar estados de muerte." << endl;
  cout << "[4] Mostrar estados importantes." << endl;
  cout << "[5] Analizar cadena." << endl;
  cout << "[6] Comprobacion DFA." << endl;
  cout << "[0] Salir." << endl;
  cout << "OPCION: ";
  cin >> opcion;
  switch(opcion)
    {case 1:
      {cout << "Nombre del fichero: ";
       cin >> fichero;
       automata.llenar_datos(fichero, errorapertura);
       break;
      }
     case 2:
      {if(errorapertura != 0) cout << "ERROR: NO SE ABRIO ANTERIORMENTE EL ARCHIVO CORRECTAMENTE." << endl;
       else automata.mostrar();
       break;
      }
     case 3:
      {if(errorapertura != 0) cout << "ERROR: NO SE ABRIO ANTERIORMENTE EL ARCHIVO CORRECTAMENTE." << endl;
      else automata.analizarmuerte();
       break;
      }
      case 4:
      {if(errorapertura != 0) cout << "ERROR: NO SE ABRIO ANTERIORMENTE EL ARCHIVO CORRECTAMENTE." << endl;
       else automata.estadosimportantes();
       break;
      }
     case 5:
      {if(errorapertura != 0) cout << "ERROR: NO SE ABRIO ANTERIORMENTE EL ARCHIVO CORRECTAMENTE." << endl;
       else automata.analizarcadena();
       break;
      }
     case 6:
      {if(errorapertura != 0) cout << "ERROR: NO SE ABRIO ANTERIORMENTE EL ARCHIVO CORRECTAMENTE." << endl;
       else
        {if(automata.comprobacionestadodfa()) cout << "Este fichero es un DFA." << endl;
         else cout <<"Este fichero NO es un DFA." << endl;
        }
       break;
      }
     case 0:
      {return 0;
       break;
      }
    }
  }while(opcion != 0);
}
 

 
 
 
 
Mil gracias a quien pueda ayudarme!
13  Programación / Programación C/C++ / Problema al meter ficheros .hpp en un proyecto que ya funcionaba en: 15 Octubre 2017, 15:57 pm
Buenas, llevo un tiempo leyendo el foro y me ha dado por registrarme para poder preguntar mis dudas y tal por aquí.

Mi problema es que tengo un proyecto, consta de el main.cpp y dos clases en ficheros .h (lo sé, esto esta mal). La cosa es que el proyecto me funciona, ejecuto el main y todo correcto. Quería mejorar un poco mi proyecto, y he metido la declaración de las funciones en .hpp y el código en .cpp, hasta aquí todo bien, me se la sintaxis y como hay que hacerlo, no tiene mucha pérdida, el problema viene cuando ya no puedo ejecutar el main ya que me sale un error, en devc++ me dice que "id returned exit status". Este error me había salido otras veces y pensé que reiniciando se solucionaría pero nada, ahí sigue, asi que me baje el netbeans pensando que igual sería problema de devc++ (cosa que leí por intenet) y nada, que no puedo ejecutar el programa, y no me da ningún fallo de sintaxis, solo que el programa devolvió un error. La cosa es que me mosquea porque no es ningún problema de funcionamiento interno del programa, ya que me funcionaba cuando solo tenía ficheros .h

Pondría el código aquí pero me parece bastante feo, a ver si alguno tiene alguna idea y si no pruebo a poner el código aquí a ver si alguno lo puede ejecutar a ver que le sale, gracias de antemano!.
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines