FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ayuda con punteros en C++
Hola, resulta que tengo una funcion que une los valores de los conjuntos A y B, en un tercer conjunto llamado C, la union funciona bien,como ven estoy trabajando con punteros, ConjuntoPtr es una clase, A,B y C son los 3 objetos de la clase ConjuntoPtr, o los 3 conjuntos, aqui creo nuevos objetos a y b, pero al eliminar los elementos de a y b minusculas, se eliminan tambien de A y B mayusculas, yo solo quiero que se eliminen de a y b minusculas, no de los objetos principales A y B, alguna idea de como puedo hacerlo por favor, muchas gracias de antemano.
Código:
void Union( ConjuntoPtr *A,ConjuntoPtr *B,ConjuntoPtr *C){ ConjuntoPtr *a=new ConjuntoPtr; a=A; ConjuntoPtr *b =new ConjuntoPtr; b=B; while(a->Cardinal()!= 0){ int elem= a->Muestrea(); C->Inserta(elem); a->Suprime(elem); } while(b->Cardinal()!= 0){ int elem= b->Muestrea(); C->Inserta(elem); b->Suprime(elem); } } |
#2
|
||||
|
||||
Cuando trabajas con punteros debes tener una cosa bien clara, copiar un puntero no es copiar el elemento al que apunta. Por eso todo lo que hagas en a, ocurre en A porque ambos apuntan a la misma cosa.
Para que a y A apunten a objeto diferentes deberás crearlos y asignarlos. Si quieres que a tenga una copia del contenido de A, deberas realizarla. Si cu clase ConjuntoPtrtiene un constructor copia o definido un operados de asignación, podrás hacer la copia sin problemas pero de esta forma (que copia el valor y no el puntero): Código:
ConjuntoPtr *a=new ConjuntoPtr; *a = *A; Recuerda que CPP permite trabajar con objetos de una clase que no son punteros: Código:
ConjuntoPtr a = *A; En el primer caso debes tener definido un operador asignación y en el segundo un constructor copia. Es buena costumbre tener ambos. Saludos. |
#3
|
|||
|
|||
muchas gracias por responder, ahora lo tengo mas claro, una duda mas, como defino un operador de asignacion o que te refieres con definir un operador asignacion?
|
#4
|
||||
|
||||
Imagina esta clase muy simple que tiene
- Un Miembro - Un constructor - Un constructor Copia - Un operador de asignación "=" Esta sería la definición: Código:
class Clase { public: int Miembro; Clase(); Clase(const Clase&); Clase &operator=(const Clase&); }; // Constructor Clase::Clase(): Miembro(0) { } // Constructor copia Clase::Clase(const Clase& c): Miembro(0) { *this = c; } // Operador asignaión Clase& Clase::operator=(const Clase &c) { Miembro = c.Miembro; return *this; } Ahora un ejemplo de copia: Código:
// Objeto de la primera clase Clase C1; C1.Miembro = 1; Clase C2 = C1; // Usando el constructor copia Clase C3; C3 = C1; // Usando el operador asignación // Usando un puntero a una clase Clase *C4 = new Clase; // La creo *C4 = C1; // Copio el valor Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
punteros | pepe_baile | C++ Builder | 4 | 24-07-2016 11:19:57 |
Punteros | kotai | Varios | 1 | 09-08-2010 16:26:34 |
uso de punteros | David | OOP | 19 | 14-12-2009 09:48:37 |
Punteros | davitcito | Varios | 2 | 25-04-2005 22:46:24 |
Punteros | rafadrover | OOP | 8 | 18-09-2003 10:09:47 |
|