Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2019
branncg branncg is offline
Miembro
 
Registrado: jun 2015
Posts: 18
Poder: 0
branncg Va por buen camino
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);


	}
	
}
Responder Con Cita
  #2  
Antiguo 13-04-2019
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 1.961
Poder: 14
escafandra Va camino a la famaescafandra Va camino a la fama
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.
Responder Con Cita
  #3  
Antiguo 13-04-2019
branncg branncg is offline
Miembro
 
Registrado: jun 2015
Posts: 18
Poder: 0
branncg Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 14-04-2019
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 1.961
Poder: 14
escafandra Va camino a la famaescafandra Va camino a la fama
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 23:36:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi