Ошибки, баги, вопросы - страница 1979

 
Andrey Barinov:
Спасибо. В документации об этом не встречал. Можете ткнуть носом?
Он сам это правило придумал. В документации сказано: 

Соответственно доступ к testfunc() возможен только (и только) из методов cA:: -> в данном случае из сA::test()

 
A100:
А вы пробовали этот пример в С++ компилировать - или это общие теоретические рассуждения?

А вы по ссылке пробовали переходить? Там можно не только откомпилировать, но и успешно выполнить пример.

 
Stanislav Korotky:

А вы по ссылке пробовали переходить? Там можно не только откомпилировать, но и успешно выполнить пример.

Почему тогда такой код не работает?

class cA;
class cB;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class cA
  {
private:
   int               m_var;
   int               m_func(void){return(this.m_var);}
public:
   void test(cB &b)
     {
      this.m_var=b.m_var;      // (1) 'm_var' - private member access error
       
      this.m_var=b.m_func();   // (2)  => norm
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class cB : public cA
  {
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   cA A;
   cB B;

   A.test(&B);
//---
   return(INIT_SUCCEEDED);
  }


Я не вижу разницы между (1) и (2).

 
Stanislav Korotky:

А вы по ссылке пробовали переходить? Там можно не только откомпилировать, но и успешно выполнить пример.

Обсуждается конкретный код приведенный выше. Если не пробовали - так и напишите
 
Andrey Barinov:

Почему тогда такой код не работает?

Сейчас вам 2-ой теоретик еще одно правило сформулирует - не менее туманное, чем первое

Предлагаю упростить код до предела

 
A100:
Обсуждается конкретный код приведенный выше. Если не пробовали - так и напишите

Именно код приведенный выше и был подправлен под синтаксис С++ - фактически оставлен один в один в контексте обсуждения доступа к приватным членам - и этот код работает. Это был ответ на вопрос, почему он работает на MQL. Что вам еще надо? Чего еще я должен попробовать? Сами чушь не пишите.

 
Stanislav Korotky:

Именно код приведенный выше и был подправлен под синтаксис С++ - фактически оставлен один в один в контексте обсуждения доступа к приватным членам - и этот код работает. Это был ответ на вопрос, почему он работает на MQL. Что вам еще надо? Чего еще я должен попробовать? Сами чушь не пишите.

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

 
Andrey Barinov:

Почему тогда такой код не работает?


Я не вижу разницы между (1) и (2).

Это баг MQL. В C++ работает. Пишите в сервис-деск.

 
Stanislav Korotky:

Это баг MQL. В C++ работает. Пишите в сервис-деск.

Ясно. Спасибо.

Просто интересно получается во втором примере. cB  ничего не знает про m_var и про m_func  и ему они недоступны (т.е. изнутри самого сB их НЕ вызвать), а из других объектов их можно вызвать...
 
A100:

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

Не хамите. Вы тут сами первыми начали ненормально общаться.

Весь Интернет состоит из левых сайтов. Как тогда им пользоваться?

Этот конкретно сайт и многие похожие существенно упрощают программерам жизнь (позволяя тестировать сниппеты, http-запросы, проверять отображение сайтов и пр.) - как к ним относиться дело каждого - не хотите не используйте, только не надо на других по этому поводу наезжать.