Вложенные классы и справка по языку MQL. - страница 2

 
Dmitry Fedoseev:

А как вы проверили видимость?

Я вот так:

Компилируется. То есть класс InnerClass видим за пределами класса OuterClass.

Да действительно, я проверял на своем коде и случайно дёрнул private метод внутреннего класса (а их там 99%). Ну тогда это вопрос к Ренату, о том насколько "Использовать можете как и в других языках". В Java/C# поведение отличается.


Dmitry Fedoseev:

Нет никакого выигрыша, кроме усложнения читаемости от вложенности.

Судить о выигрыше по крайне упрощённому примеру всё-же наверное не стоит ;) А если углубляться в данную дискуссию, то тут сразу вплывут Фаулер, Макконнелл, Роберт Мартин и далее имена по списку, с книгами которых крайне желательно ознакомиться что-бы предметно обсуждать дела архитектурно-философские. А это долго, нудно, холиварно и давно уже для меня не интересно :) И главное вряд-ли относится к тематике данного форума.

 
h.i.a:
Да действительно, я проверял на своем коде и случайно дёрнул private метод внутреннего класса (а их там 99%). Ну тогда это вопрос к Ренату, о том насколько "Использовать можете как и в других языках". В Java/C# поведение отличается.

Да, действительно определение структуры/класса видно снаружи.

Экземпляры изолируются в области видимости, а вот определения нет.

Подумаем над изоляцией.

 
void OnStart()
{
   class A
   {
      public:
   
      int get;
   
      class B
      {
         public:
      
         int set;
      };
      B b;
   };
   A a;

   Print(a.b.set);
}


Понадобилось разместить класс внутри класса, в 5-ке так работает, а вот в 4-ке нет( очень жаль(
Если бы, было множественное наследование, сделал бы с ним.

В 4-ке так, только структуры можно и то без типа string(.
 

Pavel Verveyko #:
в 5-ке так работает, а вот в 4-ке нет

так работает:

class A
{
   public:

   int get;

   class B
   {
      public:
   
      int set;
   };
   B b;
};

void OnStart()
{
   A a;
   Print(a.b.set);
}
 
trader6_1 #:

так работает:

Да, действительно, даже string принимает.