Uma pergunta para os especialistas do OOP. - página 36

 
Artyom Trishkin:

No exemplo

A classe Y contém variáveis com tipos de classes F e Z.

Mas se você já tiver objetos das classes F e Z criados e usados em algum lugar, não poderá acessá-los no objeto Y. Haverá dois novos objetos das classes F e Z no objeto Y.

Para ter acesso aos objetos das classes F e Z já criados e em uso, você precisa obter referências aos objetos F e Z da classe Y - então a classe Y pode operar com aqueles dados já armazenados em F e Z, em vez de usar os novos e imaculados F e Z.

Mas se você criar imediatamente um link com tal objeto, então F e Z nele dará acesso às classes F e Z, e seu preenchimento deve ser feito somente através da classe Y - novamente, dê acesso aos objetos F e Z a partir dele, obtenha um ponteiro para o objeto requerido e trabalhe com ele pelo ponteiro.

É complicado, no entanto. Vou pensar...
 
Artyom Trishkin:

Ou, na classe em que você quer os dados da outra classe, você pode fazer um método para obter um ponteiro para a classe desejada.

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:

Bem, sim. Isto é quando sabemos onde o objeto está nas variáveis CB a e CB b. Se eles forem criados com novos, então os indicadores precisam ser salvos, e recuperados do local salvo.

 
Artyom Trishkin:

Bem, sim. É quando sabemos onde está o objeto - nas variáveis CB a e CB b. Mas se eles forem criados através de novos, os ponteiros precisam ser salvos e recuperados do local salvo.

Uma vez criado o objeto, o ponteiro é conhecido, passe-o para outro objeto.

 
Dmitry Fedoseev:

Assim que o objeto for criado, um ponteiro será conhecido para passá-lo para outro objeto.

Mas se você precisar obter um ponteiro não no momento da criação (o usuário clicou no botão - novo objeto criado), mas no processo de continuação do trabalho com o programa.

Parece-me que é mais útil ter uma lista de todas as indicações para todos os objetos. Neste caso, você não precisa empurrar as indicações de objetos recém-criados para todos os outros objetos de outras classes. Além disso, ao criar novas classes de novos objetos, você não precisará reescrever a passagem do ponteiro do objeto para esta nova classe também. E quando você precisar obter indicações de objetos previamente criados em uma nova classe, basta escrever o método para obter o objeto correto por seu identificador.

Entretanto, cada um é louco a seu modo. Eu sou assim :)

 
Hmm, e em Sharp e MQL, os indicadores são descritores. E o código .NET está oficialmente aberto há muito tempo. Alguém aqui já tentou portar os delegados para a MQL?
 
Alexey Volchanskiy:
Hmm, e em Sharp e MQL, os indicadores são descritores. E o código .NET está oficialmente aberto há muito tempo. Alguém aqui já tentou portar os delegados para a MQL?
15.10 Lembre-me, vou pensar nisso, provavelmente vai funcionar.
 
Vladimir Simakov:
15.10 Lembre-me, vou pensar sobre isso, provavelmente vai dar certo.

o que é 15.10?

 
Alexey Volchanskiy:

o que é 15.10?

15 de outubro talvez?

 
Artyom Trishkin:

15 de outubro talvez?

Isso mesmo, mas, enquanto isso, é feriado.