[C con Clase] Constructores Copia

jferia en uci.cu jferia en uci.cu
Jue Oct 22 00:16:15 CEST 2009


Hola John, recuerda que el prototipo de un constructor de copia es un  
solo parámetro por referencia y constante, creo que tú lista puede  
tener una función que la adicione el contenido de la otra, por ejemplo  
append(otherList), además de esto le puedes implementar el constructor  
de copia pero con los fines que este está diseñado. De todas formas  
probé algo similar a lo que comentas en el compilador g++ versión 4.3  
no produce ningún error de compilación, a continuación el código  
integro:

//code ejemplo.h
#ifndef EJEMPLO_H_
#define EJEMPLO_H_

class ejemplo {
public:
	ejemplo();
	ejemplo(const ejemplo &e, const ejemplo &b);
	virtual ~ejemplo();
};

#endif /* EJEMPLO_H_ */



//Code ejemplo.cpp
#include "ejemplo.h"
#include <iostream>
using namespace std;

ejemplo::ejemplo() {
	// TODO Auto-generated constructor stub

}

ejemplo::ejemplo(const ejemplo &e, const ejemplo &b) {
	// TODO Auto-generated constructor stub
	cout<<"hello"<<endl;

}

ejemplo::~ejemplo() {
	// TODO Auto-generated destructor stub
}


//code main.cpp
#include <iostream>
#include "ejemplo.h"

using namespace std;


int main(int argc, char* argv[])
{
	ejemplo ej1;
	ejemplo ej2;

	ejemplo ej3(ej1, ej2);


        return 0;
}


Saludos

John <tanyin21 en hotmail.com> ha escrito:

> Gracias David, lo que estoy haciendo es una lista, no puse todo el código
> para no hacer extenso el correo, básicamente lo que necesito es hacer un
> constructor que reciba dos instancias de la clase lista, ahora ya lo hice de
> la forma que tu me dices, pero a la hora de compilar me da un error, dice
> que la construcción del constructor no esta correcta.Por ejemplo si se
> tratara nada mas de hacer un constructor con una instancia seria
> "lista(const lista &uno)" y así no me da error, pero si la hago "lista(lista
> uno,lista dos)", cuando en el main paso como parámetro dos instancias de
> lista es ahí donde me da error para compilar.
>
> int main(){
> 	lista luno;
> 	lista ldos;
> 	lista ltres(luno,ldos); //aquí es donde me da el error
>
> }
>
> lista(lista uno,lista dos)
> no entiendo la pregunta...
> David
>
> El 21 de octubre de 2009 12:33, John <tanyin21 en hotmail.com> escribió:
>
>> Hola a todos, soy nuevo por acá y también en el lenguaje c++, mi pregunta
>> es
>> la siguiente: en el código de abajo como hago para hacer un constructor
> que
>> reciba 2 instancias de la misma clase "lista", lo he intentando de miles
>> formas pero da un error al compilarlo.
>>
>>
>>
>> class nodo {
>>
>>   public:
>>
>>    nodo(int v, nodo *sig = NULL)
>>
>>    {
>>
>>       valor = v;
>>
>>       siguiente = sig;
>>
>>    }
>>
>>
>>
>>   private:
>>
>>    int valor;
>>
>>    nodo *siguiente;
>>
>>
>>
>>   friend class lista;
>>
>> };
>>
>>
>>
>> typedef nodo *pnodo;
>>
>>
>>
>> class lista {
>>
>>   public:
>>
>>    lista() { primero = actual = NULL; }
>>
>>    ~lista();
>>
>>
>>
>>    void Insertar(int v);
>>
>>    void Borrar(int v);
>>
>>    bool ListaVacia() { return primero == NULL; }
>>
>>    void Mostrar();
>>
>>    void Siguiente();
>>
>>    void Primero();
>>
>>    void Ultimo();
>>
>>    bool Actual() { return actual != NULL; }
>>
>>    int ValorActual() { return actual->valor; }
>>
>>
>>
>>   private:
>>
>>    pnodo primero;
>>
>>    pnodo actual;
>>
>> };
>>
>>
>>
>> Muchas gracias por la ayuda.
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>
>







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