Вопрос знатокам ООП. - страница 36

 
Artyom Trishkin:

В примере

В классе Y содержатся переменные с типами класса F и Z.

Но если у вас уже где-то созданы и используются объекты классов F и Z, то в объекте Y вы не получите к ним доступа. В объекте Y будут новые два объекта классов F и Z.

А чтобы получить доступ к уже созданным ранее, и уже используемым объектам классов F и Z, нужно получить ссылки на объекты F и Z в классе Y - тогда класс Y сможет оперировать теми данными, которые уже записаны в F и Z, а не использовать новые и девственно чистые F и Z.

Но если вы сразу создаёте такой объект-смычку, то F и Z в нём дадут доступ к классам F и Z, и их заполнение нужно делать только через класс Y - опять-таки дать из него доступ к объектам F и Z, получить указатель на нужный объект и работать с ним по указателю.

Сложно, однако. Буду думать...
 
Artyom Trishkin:

А можно в классе, где нужны данные другого сделать метод получения указателя на нужный класс.

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:

Ну да. Это когда мы знаем где объект - в переменных CB a и CB b. Если же они создаются посредством new, то указатели нужно сохранить, и получать из сохранённого места.

 
Artyom Trishkin:

Ну да. Это когда мы знаем где объект - в переменных CB a и CB b. Если же они создаются посредством new, то указатели нужно сохранить, и получать из сохранённого места.

Как только объект будет создан, станет известен указатель, передать его другому объекту.

 
Dmitry Fedoseev:

Как только объект будет создан, станет известен указатель, передать его другому объекту.

Но если потребуется получить указатель на него не в момент создания (пользователь щёлкнул кнопку - новый объект создался), а уже по ходу дальнейшей работы с программой.

Мне кажется, что выгоднее-таки иметь списки всех указателей на все объекты. В таком случае не придётся толкать указатели вновь создаваемых объектов всем другим объектам из других классов. Да и при создании новых классов новых объектов не нужно будет переписывать передачу указателя создаваемого объекта и в этот новый класс. А просто в новом классе - при необходимости получения указателей на ранее созданные объекты - прописать метод получения нужного объекта по его идентификатору.

Впрочем - каждый же по-своему с ума сходит. Я - так :)

 
Хм, а ведь в шарпе и MQL указатели являются дескрипторами. И код .NET официально открыт давно. Тут еще никто не пытался портировать делегаты на MQL?
 
Alexey Volchanskiy:
Хм, а ведь в шарпе и MQL указатели являются дескрипторами. И код .NET официально открыт давно. Тут еще никто не пытался портировать делегаты на MQL?
15.10 напомни, подумаю, скорее всего получится.
 
Vladimir Simakov:
15.10 напомни, подумаю, скорее всего получится.

что есть 15.10?

 
Alexey Volchanskiy:

что есть 15.10?

15 октября быть может?

 
Artyom Trishkin:

15 октября быть может?

Оно самое, а пока отпуск.