Una pregunta para los expertos en POO. - página 36

 
Artyom Trishkin:

En el ejemplo

La clase Y contiene variables con tipos de las clases F y Z.

Pero si ya tiene objetos de las clases F y Z creados y utilizados en algún lugar, no podrá acceder a ellos en el objeto Y. Habrá dos nuevos objetos de las clases F y Z en el objeto Y.

Para acceder a los objetos de las clases F y Z ya creados y en uso, es necesario obtener referencias a los objetos F y Z en la clase Y - entonces la clase Y puede operar con esos datos ya almacenados en F y Z, en lugar de utilizar los nuevos y prístinos F y Z.

Pero si se crea inmediatamente un objeto-enlace de este tipo, entonces F y Z en él dará acceso a las clases F y Z, y su llenado debe hacerse sólo a través de la clase Y - de nuevo, dar acceso a los objetos F y Z de ella, obtener un puntero al objeto requerido y trabajar con él por el puntero.

Sin embargo, es complicado. Voy a pensar...
 
Artyom Trishkin:

O bien, en la clase en la que quieres los datos de la otra clase, puedes hacer un método para obtener un puntero a la clase deseada.

class CA{
   protected:
   public:
   void f(){
      Print("A");
   }
};

class CB{
   protected:
   CA * a;
   public:
   void f(CA * arg){
      a=arg;
   }
   void f(){
      Print("B");
   }   
   void f2(){
      a.f();
   }    
};

CA a;
CB b;

void OnStart(){
   b.f(GetPointer(a));
   
   b.f();
   b.f2();
   
}
 
Dmitry Fedoseev:

Bueno, sí. Esto es cuando sabemos dónde está el objeto en las variables CB a y CB b. Si se crean con new, hay que guardar los punteros y recuperarlos desde la ubicación guardada.

 
Artyom Trishkin:

Bueno, sí. Eso es cuando sabemos dónde está el objeto: en las variables CB a y CB b. Pero si se crean a través de new, los punteros deben ser guardados, y recuperados desde la ubicación guardada.

Una vez creado el objeto, se conoce el puntero, pásalo a otro objeto.

 
Dmitry Fedoseev:

Tan pronto como se cree el objeto, se conocerá un puntero para pasarlo a otro objeto.

Pero si necesita obtener un puntero a él no en el momento de la creación (el usuario hizo clic en el botón - nuevo objeto creado), pero en el proceso de trabajo posterior con el programa.

Me parece que es más útil tener una lista de todos los punteros a todos los objetos. En este caso no es necesario empujar los punteros a los objetos recién creados a todos los demás objetos de otras clases. Además, cuando crees nuevas clases de objetos nuevos, no tendrás que reescribir el paso del puntero del objeto a esta nueva clase también. Y cuando necesites obtener punteros a objetos previamente creados en una nueva clase, simplemente escribe el método para obtener el objeto correcto por su identificador.

Sin embargo, cada uno está loco a su manera. Así es :)

 
Hmm, y en Sharp y MQL, los punteros son descriptores. Y el código .NET está oficialmente abierto desde hace mucho tiempo. ¿Alguien ha intentado ya portar los delegados a MQL?
 
Alexey Volchanskiy:
Hmm, y en Sharp y MQL, los punteros son descriptores. Y el código .NET está oficialmente abierto desde hace mucho tiempo. ¿Alguien ha intentado ya portar los delegados a MQL?
15.10 recuérdame, lo pensaré, probablemente funcione.
 
Vladimir Simakov:
15.10 Recuérdamelo, lo pensaré, probablemente se solucione.

¿qué es el 15.10?

 
Alexey Volchanskiy:

¿qué es el 15.10?

¿El 15 de octubre tal vez?

 
Artyom Trishkin:

¿El 15 de octubre tal vez?

Así es, pero mientras tanto es un día de fiesta.
Razón de la queja: