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

 
fxsaber:
Баг языка

Ошибка в коде пользователя - это не баг: метод InitIndicators(CIndicator *) отсутствует

 
A100:

Ошибка в коде пользователя - это не баг: метод InitIndicators(CIndicator *) отсутствует

Буковка s отсутствует, но сообщение компилятора ошибочно, поэтому в СД взялись за исправление.

 
fxsaber:

СД взялись за исправление.

Нельзя исправить то что не содержит ошибки. Загляните в файл <Indicator.mqh> - там будет класс class CIndicator без буквы s
 
A100:
Нельзя исправить то что не содержит ошибки. Загляните в файл <Indicator.mqh> - там будет класс class CIndicator без буквы s

Напишите об этом в СД. Там утверждают (не я), что ошибка имеет место быть и ее будут править.

 
fxsaber:

Напишите об этом в СД. Там утверждают (не я), что ошибка имеет место быть и ее будут править.

Вы первоначально заявили что баг - можете объяснить в чем он заключается? Что не так? Bот упрощенный код:

class A1 {}; //Indicators
class A2 {}; //Indicator
class BB {
public:
    void f( A1 * ) {}
};
class B : public BB {
public:
    void f( A1 * ) {}
};
void OnStart()
{
    A2* a;
    B b;   
    b.f( a ); //error: 'f' - no one of the overloads can be applied to the function call
}
 
fxsaber:

Напишите об этом в СД. Там утверждают (не я), что ошибка имеет место быть и ее будут править.

Сообщение компилятора об ошибке не совсем корректное.

Компилятор обрабатывает переопределение виртуального метода как перегрузку, будем это исправлять.
 
Это правильное сообщение компилятора?
int Tmp = 2;
  
if (Tmp % 2) // expression not boolean
 

А это баг?

// Добавление элемента в конец произвольного массива
template <typename T>
void AddArrayElement( T &Array[], T Value, const int Reserve = 0 )
{
  const int Size = ArraySize(Array);
  
  ArrayResize(Array, Size + 1, Reserve);
  
  Array[Size] = Value;
}

class A {};
class B : public A {};

void OnStart()
{
  A* Array[];
  
  A* a = new B; // no problem
  AddArrayElement(Array, (A*)(new B)); // no problem
  
  AddArrayElement(Array, new B); // template parameter ambiguous, could be 'A*' or 'B*'
}
 

Как по хендлу файла узнать его название?

 
Ограничение языка или синтаксиса?
struct A
{
  int i;
};

struct B
{
  const A a;
  
  B() : a({0}) // 'a' - constructor not defined
  {
    const A b = {0}; // no problem
  }  
};
Причина обращения: