• Lunes 29 de Abril de 2024, 22:29

Autor Tema:  Sobrecargar operador = con punteros  (Leído 1570 veces)

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Sobrecargar operador = con punteros
« en: Jueves 22 de Julio de 2010, 20:44 »
0
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

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Sobrecargar operador = con punteros
« Respuesta #1 en: Jueves 22 de Julio de 2010, 22:55 »
0
*lista2 = lista1;
:)

r0d

  • Miembro activo
  • **
  • Mensajes: 37
  • Nacionalidad: fr
    • Ver Perfil
    • http://r0d.developpez.com/index-es.php
Re: Sobrecargar operador = con punteros
« Respuesta #2 en: Jueves 22 de Julio de 2010, 23:02 »
0
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.  

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Sobrecargar operador = con punteros
« Respuesta #3 en: Viernes 23 de Julio de 2010, 01:41 »
0
Porque me va a hacer falta clonar objetos que los usan y he de proveer a mis clases de ese mecanismo.

Gracias