Racional.cpp, Racional.hpp, mainRacionales.cpp (dnd puse un main y algunas pruebas)
En Racional estan las funciones de toda la vida (unos constructores, operator+, operator+=, etc)
Lo más dificil que tiene es operator<<
Cuando voy a compilar mainRacionales.cpp me dice q las referencias a Racional no están. Con lo cual entiendo que no esta pudiendo compilar Racional.cpp
Entonces compilo Racional.cpp y me sale lo siguiente:
Ejecuto
"g++ -o Raci Racional.cpp"
Código:
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 0 tiene un índice de símbolo 11 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 1 tiene un índice de símbolo 12 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 2 tiene un índice de símbolo 2 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 3 tiene un índice de símbolo 2 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 4 tiene un índice de símbolo 11 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 5 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 6 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 7 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 8 tiene un índice de símbolo 12 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 9 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 10 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 11 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 12 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 13 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 14 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 15 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 16 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 17 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 18 tiene un índice de símbolo 13 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): la reubicación 19 tiene un índice de símbolo 21 inválido /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): la reubicación 0 tiene un índice de símbolo 2 inválido /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: En la función `_start': (.text+0x20): referencia a `main' sin definir collect2: error: ld returned 1 exit status
No pude encontrar en ningún lado que significa: "la reubicación % tiene un índice de símbolo % inválido",
Alguien tiene alguna minima idea de que pasa? Puede ser que este usando mal el compilador, o algo muy tonto. O que el compilador me odie.
Sigo: probe tmb con el gcc, y pasa lo mismo. Probe dejando y sacando el namespace std y los #include de Racional.h y es lo mismo. Tambien cambiando .hpp por .h xD
Incluso solamente deje en la clase el constructor y un Racional::display() y pasa lo mismo.
Código:
/** Racional.cpp */ #include <iostream> #include <cmath> #include "Racional.hpp" using namespace std; Racional::Racional() { Num = 0; Den = 1; } Racional::Racional(long numerador, long denominador) { Num = numerador; Den = denominador; normalizar(*this); } Racional::Racional(const Racional &copia) { Num = copia.Num; Den = copia.Den; //copia ya esta normalizada, asi q no necesito repetir la operacion. } /** mainRacional.cpp */ #include <iostream> #include "Racional.hpp" using namespace std; int main() { Racional a(4,5); Racional b(9,3); Racional c; cout << "4/5 = "; a.display(); return 0; }