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

 

Зачем в mql5 move семантика? Тут не нужна такая оптимизация производительности, тем более это виртуалка. Для каких еще целей ее вводить?)

Сам по себе mql5 сильно отличается как от C++, так и от C++98, так и уж тем более от C++11/14/17, но его возможности сейчас полностью покрывают необходимые вещи для создания советника.

 
Andrey Pogoreltsev:

но его возможности сейчас полностью покрывают необходимые вещи для создания советника.

Они и 6 лет назад в старом MQL4 покрывали эти необходимости, если вы имеете представление, каков был уровень языка в те времена.  Мы писали на нём советники, а некоторые и до сих пор кодят в таком архаическом стиле.  Так что всё относительно.

Для каких еще целей ее вводить?)

Это обсуждалось последние пару страниц ветки.
 

Тут выдаёт ошибку:

void OnStart()
  {
   struct sA
     {
      int               ii[51];
     };
   struct sB
     {
      string            name;
      sA                distrib;
     };
   sB f;
  }
'distrib' - struct undefined    Test2.mq5       21      25

А так не выдаёт:

void OnStart()
  {
   struct sA
     {
      int               ii[51];
     };
   struct sB
     {
      //string            name;
      sA                distrib;
     };
   sB f;
  }

Так тоже не выдаёт:

struct sA
  {
   int               ii[51];
  };
struct sB
  {
   string            name;
   sA                distrib;
  };

void OnStart()
  {
   sB f;
  }

В прикрепленном файле скрипт для воспроизведения ошибки, пустой скрипт с парой строк кода что выше.

Файлы:
Test2.mq5  1 kb
 

Ну это совсем не логично:

class A
  {
   class B
     {
      class C
        {
         class D
           {
            class E
              {
               bool              YES;
              };
           };
        };
     };
  };
void OnStart()
  {
   E g;
  }

Класс E не заслуживает такой популярности.

Компилируется без ошибок.

 
Это ошибка компилятора?
class A
{
private:
  int i;
};

class B : public A
{
public:  
  void f( int i ) {} // declaration of 'i' hides member declaration at line 4
};
 
fxsaber:
Это ошибка компилятора?
Может назойливый трёп формчанина о фигне, отвлекающий от серьёзных дел?
 
fxsaber:
Это ошибка компилятора?
в плюсах то же самое
 
Vict:
Может назойливый трёп формчанина о фигне, отвлекающий от серьёзных дел?

когда будешь в шкуре его энтузиазма проходить все это, тогда раскажешь?

 
fxsaber:
Это ошибка компилятора?

так вроде логично же.

как могут в паблик функции входные параметры быть приват. Конфликт интересов.

если этот приват параметр нужно использовать внутри этой функции, то его не нужно объявлять входным, т.к. он итак существует.

Если это подразумевается другая переменная, то конечно же будет внутри функции конфликт имен с существующей приват переменной и поэтому ее нужно обозвать другим именем. 


ЗЫ Оказывается не важно - i паблик или приват. Это банальный конфликт имен. Внутри функции f будет неопределенность что такое i - входной параметр или глобальная переменная родительского класса.

 
Nikolai Semko:

в вопросе подразумевалось, что мы не можем обратиться к члену из-за приватности, но конфликт имен все равно показывается компилятором.

как я уже написал, плюсы ведут себя точно так же, т.е. ошибки в компиляторе нет и все хорошо.

Причина обращения: