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

 
fxsaber #:

Где про этот синтаксис почитать?

Нет якоря на странице, чтобы прям на этот раздел ссылку дать.

Перейдите по этой ссылке:

https://www.mql5.com/ru/docs/basis/types/classes#final_class

И скрольте вверх, там будет заголовок "Спецификатор delete":


 
Maxim Kuznetsov #:

всё ок...

указатель в mql это не указатель в C++. Вообще принципиально разные вещи и ближе к syntax sugar

вас попутывает A1-- :-)

Если путаю, то укажите конкретно где и что я путаю, а если не можете указать, то нечего понапрасну балаболить

 

В документации про это прямо сказано:

В отличие от C++, переменная hobject из вышеприведенного примера не является указателем на память, а является дескриптором объекта. Кроме того, в языке MQL5 все объекты в параметрах функции обязательно должны передаваться по ссылке.
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
  • www.mql5.com
Указатели объектов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladislav Boyko #:

Нет якоря на странице, чтобы прям на этот раздел ссылку дать.

Перейдите по этой ссылке:

https://www.mql5.com/ru/docs/basis/types/classes#final_class

И скрольте вверх, там будет заголовок "Спецификатор delete":

https://www.mql5.com/ru/docs/basis/types/classes#delete

Спасибо!

Документация по MQL5: Основы языка / Типы данных / Структуры, классы и интерфейсы
Документация по MQL5: Основы языка / Типы данных / Структуры, классы и интерфейсы
  • www.mql5.com
Структуры, классы и интерфейсы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Там (тут) хорошие примеры по передаче объектов в функцию.

Но я не понимаю, почему не упомянуто про передачу указателя в качестве простого типа - без ссылки. Именно так делаю, когда нужно хранить копию указателя:

class A {};

class B
  {
private:
   const A* m_ptr;
public:
   void initialize(const A* ptr)
     {
      m_ptr = ptr;
     }
  };

void OnStart()
  {
   A* a1 = new A;
   A  a2;
   B  b;
   b.initialize(a1);             // когда POINTER_DYNAMIC
   b.initialize(GetPointer(a2)); // когда POINTER_AUTOMATIC
   delete a1;
  }

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

Потому, что если метод принимает объект по ссылке, а сам объект изначально с POINTER_DYNAMIC, то получается + 2 излишних преобразования (указатель -> объект -> указатель):

class A {};

class B
  {
private:
   const A* m_ptr;
public:
   void initialize(const A& ptr)
     {
      m_ptr = GetPointer(ptr); // #2 объект -> указатель
     }
  };

void OnStart()
  {
   A* a1 = new A;
   B  b;
   b.initialize(a1); // #1 указатель -> объект
   delete a1;
  }

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

 
В одном случае есть сообщение об ошибке, а в другом - нет:
class A {
protected:
    enum { x1 }; 
    static int x2;
};
int A::x2;
void OnStart()
{
    Print( A::x1 ); //(1)//нормально ???
    Print( A::x2 ); //(2)//Error: cannot access to protected member 'x' declared in class 'A'
}

А какая принципиальная разница?

 

Вопрос по сайту. При попытке прикрепить ex4 в работе выскакивает ошибка:

Что это может означать? 

 
Konstantin Gruzdev #:

Вопрос по сайту. При попытке прикрепить ex4 в работе выскакивает ошибка:

Что это может означать? 

Вопрос решен. Файл прикрепился.

 
Aleksei Skrypnev #:

Выделяю 10 файлов .mq5, нажимаю открыть, а открывается в редакторе хорошо если 2-3.

У кого-то проблема такая тоже наблюдается\воспроизхводится?

Проблема диагностировалась- на стороне MetaEditor, он стал медленнее открывать файлы на процессоре годичной давности, и ещё на 2-ух.

Если кто может- подскажите сходу альтернативные редакторы, с подсветкой синтаксиса.

 
Aleksei Skrypnev #:

Проблема диагностировалась- на стороне MetaEditor, он стал медленнее открывать файлы на процессоре годичной давности, и ещё на 2-ух.

Если кто может- подскажите сходу альтернативные редакторы, с подсветкой синтаксиса.

https://www.mql5.com/ru/forum/445195/page2#comment_46407341

Как это сделать в MetaEditor?
Как это сделать в MetaEditor?
  • 2023.04.21
  • www.mql5.com
1 как в MetaEditor сделать чтобы при двойном клике выделялась вся переменная целеком с точками...
Причина обращения: