[C con Clase] problemas con asignación de puntores Mas detallado

Leonel Florín Selles leonel06033 en cfg.jovenclub.cu
Mar Nov 17 00:03:36 CET 2009


Bueno miren lo que tengo:

Dos clases, donde de una paso dados a la otra por ejemplo

Clase #1:

class clase1{
  private:
     signed short A[5];  //arreglo a

  public:
     clase1(){
          for (int i=0; i<5; i++)
               A[i] = i;
     };
     ~clase1();

   signed short * getA(){ return A;}
}

class clase2{
  private:
     signed short *B, *C;

     class1 a;

  public:
     clase2(){
          B = NULL;
     };
     ~clase2();

  //aqui esta la cosa
   void manipulador(){
             int dato =6;
             B = a.getA();
             C = B;
             B = &dato;
   }
}

bueno la cosa esta en el metodo manipulador de la clase2, cuando b recibe la
dirección del arreglo A y despues se lo pasa a C, este ultimo lo recibe bien,
pero despues cuando se cambia a B para que apunte a otro dato C tambien cambia,
claro que este ejemplo que puse es ipotetico porque en esencia es lo que me esta
pasando pero en otro programa, creo que este compilador se me volvio loco.

saludos.

> Hola amigos:
>
> bueno quisiera que me aclaran una duda que no puedo dar con ella, la cosa es una
> bobería.
>
> tengo dos apuntadores
>
> int *a;
> int *b;
>
> utilizo una función que devuelve un apuntador a int el cual es recibido por el
> apuntador a y posteriormente este se lo pasa a b
>
> a = función;
> b = a;
>
> en este caso a y b apuntan a la misma dirección que nos devuelve la función, el
> problema es que cuando le paso al apuntador a otra dirección tambien es cambiado
> en el apuntador b sin aberlo asignado antes.
>
> a = función1;
>
> entonces b toma el mismo valor del apuntador a;
>
> que será esta boberia que no acabo de dar con ella.
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>






Más información sobre la lista de distribución Cconclase