![]() |
![]() |
| Paypal | 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
|
||||
|
||||
|
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. |
|
#2
|
|||
|
|||
|
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?
|
|
#3
|
||||
|
||||
|
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 |
|