SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: krnl64 en Jueves 22 de Julio de 2010, 20:44

Título: Sobrecargar operador = con punteros
Publicado por: krnl64 en Jueves 22 de Julio de 2010, 20:44
Hola, he escrito una clase lista cuya interfaz declaro a continuación
Código: C++
  1.  
  2. class linkedlist
  3.     {
  4.    
  5.         public:
  6.        
  7.             linkedlist(void); // default constructor
  8.            
  9.             linkedlist (const linkedlist& tocopy); // copy constructor
  10.                
  11.             ~linkedlist(); // destructor
  12.            
  13.              bool insert ( const int value ); // insert element            
  14.            
  15.              bool remove ( void ); // remove first element                     
  16.            
  17.              bool is_empty ( void ) const; // returns if the list is empty
  18.            
  19.              int size  ( void ) const; // return list size
  20.            
  21.              linkedlist& operator = (const linkedlist& list); // overload = operator       
  22.              
  23.              int& operator [] ( const int index ) const; // overload subscript operator
  24.    
  25.         private:
  26.        
  27.             struct node
  28.             {
  29.                 int value;  // node struct
  30.                 node* next;
  31.             }; 
  32.            
  33.             int elements;     // amount of elements
  34.             node* firstnode; // first node
  35.                                
  36.     };
  37.  
  38.  

Lo que quiero conseguir es que cuando escriba esto

Código: C++
  1.  
  2.  linkedlist*  lista1 = NULL;
  3.  linkedlist* lista2 = NULL;
  4.  
  5. // creo lista1 con new
  6.  
  7. lista2 = lista1;
  8.  
  9.  
  10.  

no se copie tal cual el objeto, sino que se cree memoria para el y se copien los valores.
He probado a sobrecargar el operador = de esta manera
Código: C++
  1.  
  2. linkedlist& operator = (const linkedlist* &list);
  3.  
  4.  

pero no consigo que cuando se ejecuta la linea 7 entre en la funcion.

Alguien sabe como hacer esto ?

Gracias
Título: Re: Sobrecargar operador = con punteros
Publicado por: Amilius en Jueves 22 de Julio de 2010, 22:55
*lista2 = lista1;
:)
Título: Re: Sobrecargar operador = con punteros
Publicado por: r0d en Jueves 22 de Julio de 2010, 23:02
o aun:
*lista2 = *lista1;

pero ¿porque utilizar tus listas como punteros, que te complicas la vida?

Osea, en vez de
Código: C++
  1. linkedlist*  lista1 = NULL;
  2. linkedlist* lista2 = NULL;
  3. lista2 = lista1;
  4.  

porque no hacer:
Código: C++
  1. linkedlist lista1;
  2. linkedlist lista2;
  3. lista2 = lista1;
  4.  
(http://www.developpez.net/forums/images/smilies/icon_question.gif)
Título: Re: Sobrecargar operador = con punteros
Publicado por: krnl64 en Viernes 23 de Julio de 2010, 01:41
Porque me va a hacer falta clonar objetos que los usan y he de proveer a mis clases de ese mecanismo.

Gracias