[C con Clase] constructor con valores definidos

omar mendoza omar.p9 en gmail.com
Mie Ene 19 06:14:20 CET 2011


Ok, gracias Steven por la respuesta tan pronta. Saludos.

El 18 de enero de 2011 22:53, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola Omar,
>
>
> On 1/18/2011 9:52 PM, omar mendoza wrote:
>
>> Hola, en lenguaje C se puede definir una función de la siguiente
>> manera:
>>
>> void funcion(int numero1, int numero2=0)
>>
>> se puede hacer esto en C++??
>>
>>
> La verdad es que en C no se puede hacer lo que dices, pero en C++ sí. Si
> tienes un compilador de C que sí acepta parámetros por defecto, entonces
> será una extensión al lenguaje y por tanto no es una prestación que
> pertenezca al estándar de ANSI C.
>
>  tengo lo siguiente
>>
>>
> [CORTE]
>
>
>  y me sale éste error
>>
>> omar en debian:~/trabajo/pruebas$ g++ pruebas.cpp main.cpp -o main -g
>> /tmp/ccZyW4Ay.o: In function `Prueba':
>> /home/omar/trabajo/pruebas/pruebas.cpp:17: multiple definition of
>> `Prueba::Prueba(int, int, int)'
>> /tmp/cc31SRVF.o:/home/omar/trabajo/pruebas/pruebas.cpp:17: first
>> defined here
>> /tmp/ccZyW4Ay.o: In function `Prueba':
>> /home/omar/trabajo/pruebas/pruebas.cpp:17: multiple definition of
>> `Prueba::Prueba(int, int, int)'
>> /tmp/cc31SRVF.o:/home/omar/trabajo/pruebas/pruebas.cpp:17: first
>> defined here
>> /tmp/ccZyW4Ay.o: In function `Prueba::print()':
>> /home/omar/trabajo/pruebas/pruebas.cpp:24: multiple definition of
>> `Prueba::print()'
>> /tmp/cc31SRVF.o:/home/omar/trabajo/pruebas/pruebas.cpp:24: first
>> defined here
>> collect2: ld returned 1 exit status
>>
>>
> Según los mensajes de error que te salen, estás definiendo las mismas
> funciones en la misma compilación. Sospecho que has incluido las
> definiciones de las funciones en varios ficheros fuente. Asegúrate de que
> incluyes cada fichero de cabecera que necesitas UNA sola vez. Para esto, usa
> las directivas del precompilador. Por ejemplo,
>
> // "pruebas.h"
> #ifndef _PRUEBAS_H_
>  #define _PRUEBAS_H_
>
>
> class Prueba
> {
> public:
>  Prueba();
>  Prueba( int, int, int );
>  void print();
>
> private:
>  int x;
>  int y;
>  int z;
> };
>
> #endif
>
>
> // "pruebas.cpp"
> #include <iostream>
> #include "pruebas.h"
> ...
>
>
> // "main.cpp"
> #include <iostream>
> #include "pruebas.h"
>
> int main()
> {
>  ...
> }
>
>
> Como puedes ver, incluimos "pruebas.h" una sola vez en cada fichero fuente
> que lo necesita.
>
> Aparte de esto, tienes un error en el código que nos has presentado, ya que
> no tienes una definición para el constructor sin parámetros. Es decir, no
> tienes el siguiente constructor:
>
> Prueba::Prueba()  {...}
>
>
> El otro error es en 'main()'. Usas el operador 'new' pero al liberar la
> memoria usas la función 'free()' de ANSI C. Esto no es correcto. Si usas
> 'new' debes usar 'delete'. No mezcles los operadores de gestión de memoria
> de C++ con las funciones de ANSI C.
>
>
> Espero que esto te oriente.
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
"Las cicatrices nos recuerdan que el pasado fue real" Dr. Lecter en Dragón
Rojo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110118/07615e00/attachment.html>


Más información sobre la lista de distribución Cconclase