Une question pour les experts de la POO. - page 36

 
Artyom Trishkin:

Dans l'exemple

La classe Y contient des variables dont les types relèvent des classes F et Z.

Mais si vous avez déjà des objets de classe F et Z créés et utilisés quelque part, vous ne pourrez pas y accéder dans l'objet Y. Il y aura deux nouveaux objets de classes F et Z dans l'objet Y.

Pour avoir accès aux objets des classes F et Z déjà créés et utilisés, vous devez obtenir des références aux objets F et Z dans la classe Y - la classe Y peut alors opérer avec ces données déjà stockées dans F et Z, au lieu d'utiliser les nouveaux et immaculés F et Z.

Mais si vous créez immédiatement un tel lien d'objet, alors F et Z dans celui-ci donneront accès aux classes F et Z, et leur remplissage ne devrait se faire que par la classe Y - encore une fois, donnez accès aux objets F et Z à partir de celui-ci, obtenez un pointeur sur l'objet requis et travaillez avec lui par le pointeur.

Mais c'est compliqué. Je vais réfléchir...
 
Artyom Trishkin:

Ou, dans la classe où vous voulez les données de l'autre classe, vous pouvez créer une méthode pour obtenir un pointeur vers la classe désirée.

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:

Eh bien, oui. C'est lorsque nous savons où se trouve l'objet dans les variables CB a et CB b. S'ils sont créés avec new, alors les pointeurs doivent être sauvegardés, et récupérés à partir de l'emplacement sauvegardé.

 
Artyom Trishkin:

Eh bien, oui. C'est à ce moment que nous savons où se trouve l'objet - dans les variables CB a et CB b. Mais s'ils sont créés via new, les pointeurs doivent être enregistrés et récupérés à partir de l'emplacement enregistré.

Une fois l'objet créé, le pointeur est connu, passez-le à un autre objet.

 
Dmitry Fedoseev:

Dès que l'objet est créé, un pointeur sera connu pour le passer à un autre objet.

Mais si vous voulez obtenir un pointeur sur lui non pas au moment de la création (l'utilisateur a cliqué sur le bouton - nouvel objet créé), mais au cours du processus de travail ultérieur avec le programme.

Il me semble qu'il est plus utile de disposer d'une liste de tous les pointeurs vers tous les objets. Dans ce cas, il n'est pas nécessaire de pousser les pointeurs des objets nouvellement créés vers tous les autres objets des autres classes. De même, lorsque vous créez de nouvelles classes de nouveaux objets, vous n'aurez pas besoin de réécrire le passage du pointeur d'objet à cette nouvelle classe également. Et lorsque vous avez besoin d'obtenir des pointeurs vers des objets précédemment créés dans une nouvelle classe, il suffit d'écrire la méthode permettant d'obtenir le bon objet par son identifiant.

Cependant, chacun est fou à sa manière. Je le suis :)

 
Hmm, et en Sharp et MQL, les pointeurs sont des descripteurs. Et le code .NET est officiellement ouvert depuis longtemps. Quelqu'un a-t-il déjà essayé de porter des délégués vers MQL ?
 
Alexey Volchanskiy:
Hmm, et en Sharp et MQL, les pointeurs sont des descripteurs. Et le code .NET est officiellement ouvert depuis longtemps. Quelqu'un a-t-il déjà essayé de porter des délégués vers MQL ?
15.10 rappelle-moi, je vais y réfléchir, ça va probablement marcher.
 
Vladimir Simakov:
15.10 Rappelle-moi, je vais y réfléchir, ça va probablement marcher.

Qu'est-ce que le 15.10 ?

 
Alexey Volchanskiy:

Qu'est-ce que le 15.10 ?

Le 15 octobre peut-être ?

 
Artyom Trishkin:

Le 15 octobre peut-être ?

C'est vrai, mais en attendant, c'est un jour férié.
Raison: