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

 
Vladislav Boyko #:

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

Согласен.

 
fxsaber #:

Логическое выражение.

Понял, спасибо. Значит предупреждение о несовпадении типа данных должно быть.

 
Aleksey Vyazmikin #:

Понял, спасибо. Значит предупреждение о несовпадении типа данных должно быть.

Не должно быть.

void f( int ) {}

void OnStart()
{
  f(true); // OK
}
 
Еще случай, когда без разыменования указателя не обойтись.
class A
{
public:
  void operator =( const A* ) { Print(__FUNCSIG__); }
};

void OnStart()
{
  A* a = new A;
  
  *a = a; // void A::operator=(const A*)

  delete a;
}
 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам".
 

Методы для работы с массивами.  В справка описаны методы, которых нет. Зато есть методы не описанные в справке.

При попытке скомпилировать вот это:

void OnStart()
  {
   double array[];
   int size = 3;
   array.Reserve(size);
  }

Закрывается метаэдитор )))

Если вместо size подставить просто 3, то всё норм компилируется, а вот переменную не вывозит никак.

Вполне возможно, что я его как то не правильно применил, но мы об этом никогда не узнаем, так как этот метод не описан в справке. Эх.


ЗЫ. Я хотел написать  array.Resize(size), ну как в справке написано    int array.Resize(const int range_sizes[], const int reserve);

но в метаэдиторе ресайза не нашлось.

 
Aleksandr Slavskii #:

Методы для работы с массивами.  В справка описаны методы, которых нет. Зато есть методы не описанные в справке.

При попытке скомпилировать вот это:

Закрывается метаэдитор )))

Если вместо size подставить просто 3, то всё норм компилируется, а вот переменную не вывозит никак.

Вполне возможно, что я его как то не правильно применил, но мы об этом никогда не узнаем, так как этот метод не описан в справке. Эх.


ЗЫ. Я хотел написать  array.Resize(size), ну как в справке написано    int array.Resize(const int range_sizes[], const int reserve);

но в метаэдиторе ресайза не нашлось.

Ну, чисто логически, если входной параметр const 

   bool              Reserve(const int size);

значит переменную нельзя. Я попробовал бы поставить перед переменной 

array.Reserve(const size);

но абсолютно неуверен, что прокатит.

 
Alexey Viktorov #:

Ну, чисто логически, если входной параметр const 

значит переменную нельзя. Я попробовал бы поставить перед переменной 

но абсолютно неуверен, что прокатит.

Не, не прокатывает. Вырубается метаэдитор и с const  переменной.

Да и не просит эта функция константную переменную.


 
Aleksandr Slavskii #:

Не, не прокатывает. Вырубается метаэдитор и с const  переменной.

Да и не просит эта функция константную переменную.


Через дефайн только. Во многих функциях переменные не прокатывают, только значения. В массивах размеры задаются значениями.
 
Valeriy Yastremskiy #:
Через дефайн только. Во многих функциях переменные не прокатывают, только значения. В массивах размеры задаются значениями.

Спасибо, но

, суть моего коммента не в вопросе как сделать, чтоб работало.

Коммент по сути просто указывает на ошибку, без каких бы то ни было вопросов.

Чтоб работало проще воспользоваться 

ArrayResize(array,size,size)