Programación General > C/C++

 Sobrecargar operador = con punteros

(1/1)

krnl64:
Hola, he escrito una clase lista cuya interfaz declaro a continuación

--- Código: C++ --- class linkedlist    {            public:                    linkedlist(void); // default constructor                        linkedlist (const linkedlist& tocopy); // copy constructor                            ~linkedlist(); // destructor                         bool insert ( const int value ); // insert element                                      bool remove ( void ); // remove first element                                               bool is_empty ( void ) const; // returns if the list is empty                         int size  ( void ) const; // return list size                         linkedlist& operator = (const linkedlist& list); // overload = operator                                  int& operator [] ( const int index ) const; // overload subscript operator            private:                    struct node            {                int value;  // node struct                node* next;            };                          int elements;     // amount of elements            node* firstnode; // first node                                    };  
Lo que quiero conseguir es que cuando escriba esto


--- Código: C++ ---  linkedlist*  lista1 = NULL; linkedlist* lista2 = NULL; // creo lista1 con new lista2 = lista1;   
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++ --- linkedlist& operator = (const linkedlist* &list);  
pero no consigo que cuando se ejecuta la linea 7 entre en la funcion.

Alguien sabe como hacer esto ?

Gracias

Amilius:
*lista2 = lista1;
:)

r0d:
o aun:
*lista2 = *lista1;

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

Osea, en vez de

--- Código: C++ ---linkedlist*  lista1 = NULL;linkedlist* lista2 = NULL;lista2 = lista1; 
porque no hacer:

--- Código: C++ ---linkedlist lista1;linkedlist lista2;lista2 = lista1; 

krnl64:
Porque me va a hacer falta clonar objetos que los usan y he de proveer a mis clases de ese mecanismo.

Gracias

Navegación

[0] Índice de Mensajes

Ir a la versión completa