Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени изучать MQL5? Библиотека исходников для вас!
Sergey Eremin
4164
Sergey Eremin 2014.10.14 16:24 
Добрый день, коллеги!
Помогите разобраться, действительно ли MQL4 дозволяет доступ к protected методам постороннего класса (не родительского), или это ошибка компилятора?
Простейший пример:
class A
{
   protected:
      static double getAValue(void) { return 123.0; }
   public:
      A(void){}
      ~A(void){}
};

class B
{
   protected:
      double m_value;
   public:
      B(void){ m_value = A::getAValue(); printf(DoubleToStr(m_value)); }
      ~B(void){}
};

int OnInit()
{
   B *testObj = new B();
   delete testObj;
   return(INIT_SUCCEEDED);
}

С точки зрения MQL4 - всё пучком, код компилируется. 

Результат работы такого кода:

 

Но ведь это явно не хорошо? Какая же тогда разница между public и protected? 

К примеру, C++ такого не позволяет, компилятор закономерно ругается в духе " 'A::getAValue()' is not accessible".

P.S. беглый поиск не помог, если уже обсуждалось - не ругайте, просто укажите ссылку.
Ilyas
1182
Ilyas 2014.10.15 08:57  
Спасибо за сообщение.
Это ошибка в компиляторе.

Исправлено, исправление войдёт в следующих билд компилятора.

Sergey Eremin
4164
Sergey Eremin 2014.10.15 12:30  
mql5:
Спасибо за сообщение.
Это ошибка в компиляторе.

Исправлено, исправление войдёт в следующих билд компилятора.

Рад помочь (пусть и лишь сообщением).

Большое спасибо за очень оперативную реакцию!

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий