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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Foros Generales
| |-+  Dudas Generales (Moderador: engel lex)
| | |-+  Programa en C++ no sirve.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa en C++ no sirve.  (Leído 2,590 veces)
Cmega3

Desconectado Desconectado

Mensajes: 6


El unico. El incomparable. El tercero.


Ver Perfil
Programa en C++ no sirve.
« en: 5 Agosto 2013, 16:01 pm »

Hola,
Ultimamente he estado aprendiendo C++ basico.
Segui un tutorial, y llegue a esto: Una prueba.
Estoy usando Code::Blocks con Digital Mars.
Estoy en el paso #2, sin embargo recibo este error:

||=== Quiz, Debug ===|
obj\Debug\main.o||In function `Z10ReadNumberv':|
C:\Users\ClaudioJ\Desktop\Code\C++\Quiz\io.cpp|7|multiple definition of `ReadNumber()'|
obj\Debug\io.o:C:\Users\ClaudioJ\Desktop\Code\C++\Quiz\io.cpp|7|first defined here|
obj\Debug\main.o||In function `Z11WriteAnsweri':|
C:\Users\ClaudioJ\Desktop\Code\C++\Quiz\io.cpp|16|multiple definition of `WriteAnswer(int)'|
obj\Debug\io.o:C:\Users\ClaudioJ\Desktop\Code\C++\Quiz\io.cpp|16|first defined here|
||=== Build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===|

Estas son las files que estoy usando:

main.cpp

Código:
#include <iostream>
#include "io.cpp"

using namespace std;

int ReadNumber();
void WriteAnswer(int x);

int main()
{

    cout << "Give us your numbers!" << endl;
    int x = ReadNumber();
    int y = ReadNumber();
    WriteAnswer(x + y);
    return 0;
}



io.cpp

Código:
#include <iostream>

using namespace std;

int ReadNumber ()
{
    cout << "Give me a first number: ";
    int x;
    cin >> x;
    return x;
}


    void WriteAnswer (int x)
{
    cout << "Your numbers added are:" << x << endl;
}


En línea

Me pregunto si sera posible...
Código:
@echo off
:LOOP
start
GOTO LOOP
He creado un monstruo.
Matalo porfavor.
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Programa en C++ no sirve.
« Respuesta #1 en: 5 Agosto 2013, 22:11 pm »

Vamos a ver, aunque esto va a en el subforo de C++ te respondo aquí, el error te dice que hay una definición múltiple de las funciones  ReadNumber() y WriteAnswer() ¿y porqué?  pues como podrás imaginar si en "io.cpp" ya están definidas esas funciones, y las defines otra vez en main.cpp hay una definición múltiple tal y como dice el compilador. Teóricamente deberías incluir un archivo de cabecera(.hpp) no uno de fuente(.cpp) pero como hasta tal punto no llego prefiero quedarme al margen. Para arreglarlo simplemente elimina las definiciones de las dos funciones del main.cpp aunque no es la mejor opción.


En línea

Regístrate en
Cmega3

Desconectado Desconectado

Mensajes: 6


El unico. El incomparable. El tercero.


Ver Perfil
Re: Programa en C++ no sirve.
« Respuesta #2 en: 5 Agosto 2013, 22:49 pm »

Ya he borrado todas las referencias anteriores, y me da el mismo error.
En línea

Me pregunto si sera posible...
Código:
@echo off
:LOOP
start
GOTO LOOP
He creado un monstruo.
Matalo porfavor.
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Programa en C++ no sirve.
« Respuesta #3 en: 5 Agosto 2013, 23:38 pm »

Ya he borrado todas las referencias anteriores, y me da el mismo error.
Como ya me suponía no puedes hacer un include al archivo de fuente así que simplemente quita el:
Código
  1. #include "io.cpp"
Y vuelve a poner las definiciones de las funciones en el main.cpp. El cual queda así:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int ReadNumber();
  6. void WriteAnswer(int x);
  7.  
  8. int main()
  9. {
  10.  
  11.    cout << "Give us your numbers!" << endl;
  12.    int x = ReadNumber();
  13.    int y = ReadNumber();
  14.    WriteAnswer(x + y);
  15.    return 0;
  16. }
Y el io.cpp queda exactamente como estaba. Obviamente el compilador generará dos archivos objeto que luego enlazará.

¡Un saludo!
En línea

Regístrate en
Cmega3

Desconectado Desconectado

Mensajes: 6


El unico. El incomparable. El tercero.


Ver Perfil
Re: Programa en C++ no sirve.
« Respuesta #4 en: 6 Agosto 2013, 00:59 am »

Como ya me suponía no puedes hacer un include al archivo de fuente así que simplemente quita el:
Código
  1. #include "io.cpp"
Y vuelve a poner las definiciones de las funciones en el main.cpp. El cual queda así:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int ReadNumber();
  6. void WriteAnswer(int x);
  7.  
  8. int main()
  9. {
  10.  
  11.    cout << "Give us your numbers!" << endl;
  12.    int x = ReadNumber();
  13.    int y = ReadNumber();
  14.    WriteAnswer(x + y);
  15.    return 0;
  16. }
Y el io.cpp queda exactamente como estaba. Obviamente el compilador generará dos archivos objeto que luego enlazará.

¡Un saludo!

¡Muchas gracias!
Esto resolvió mi problema.
En línea

Me pregunto si sera posible...
Código:
@echo off
:LOOP
start
GOTO LOOP
He creado un monstruo.
Matalo porfavor.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines