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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Undefined reference to (C++) [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Undefined reference to (C++) [SOLUCIONADO]  (Leído 5,584 veces)
Eskizoide

Desconectado Desconectado

Mensajes: 13


Ver Perfil
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!


« Última modificación: 30 Octubre 2017, 13:47 pm por Eskizoide » En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Undefined reference to (C++)
« Respuesta #1 en: 30 Octubre 2017, 12:29 pm »

Hola, seguro que no se están linkando bien las fuentes, qué ide estás usando  ?? , has probado en incluir el cpp en lugar del hpp ??

Saludos


En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Eskizoide

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Undefined reference to (C++)
« Respuesta #2 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.
En línea

Eskizoide

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Undefined reference to (C++)
« Respuesta #3 en: 30 Octubre 2017, 12:58 pm »

Hola, seguro que no se están linkando bien las fuentes, qué ide estás usando  ?? , has probado en incluir el cpp en lugar del hpp ??

Saludos

Hola, nada, eso no funciona, como imaginaba, ya que no accede a los .hpp y pierde variables y tal. He probado a compilarlo por línea de comandos y me sale el mismo error, undefined reference to, así que no creo que sea problema del IDE.
En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Undefined reference to (C++)
« Respuesta #4 en: 30 Octubre 2017, 13:14 pm »

Las fuentes (cpp) de los que dependes están compiladas  ???
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Eskizoide

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Undefined reference to (C++)
« Respuesta #5 en: 30 Octubre 2017, 13:47 pm »

Nada, ya está arreglado, ese era el problema se me olvidó compilar uno de los ficheros, pensaba que cuando compilaba menu.cpp se compilaban el resto. Gracias :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
undefined reference to `SDL_GetPlatform' !!!!
Programación C/C++
<[(x)]> 6 3,858 Último mensaje 9 Julio 2010, 04:46 am
por <[(x)]>
Gas con sintaxis intel: Undefined reference to...
ASM
farresito 1 5,242 Último mensaje 11 Marzo 2011, 23:15 pm
por Eternal Idol
template undefined reference : help.
Programación C/C++
bash 2 2,860 Último mensaje 2 Mayo 2011, 19:09 pm
por bash
Undefined reference to 'WinMain@16'
Programación C/C++
Schrödinger 2 4,555 Último mensaje 26 Febrero 2013, 23:15 pm
por Eternal Idol
Error: undefined reference to WinMain@16 [C] [solucionado]
Programación C/C++
SoyelRobert 3 24,280 Último mensaje 3 Enero 2014, 23:13 pm
por SoyelRobert
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines