Errori, bug, domande - pagina 2064

 
fxsaber:
Bug della lingua

Un bug nel codice utente non è un bug: manca il metodo InitIndicators(CIndicator *)

 
A100:

L'errore nel codice utente non è un bug: manca il metodo InitIndicators(CIndicator *)

Manca la lettera s, ma il messaggio del compilatore è errato, quindi la SD ha preso a correggerlo.

 
fxsaber:

Gli SD si sono assunti il compito di ripararlo.

Non si può aggiustare qualcosa che non contiene un errore. Guarda nel file <Indicator.mqh> - ci sarà la classe CIndicator senza la lettera s
 
A100:
Non si può correggere qualcosa che non contiene un errore. Guarda nel file <Indicator.mqh> - ci sarà la classe CIndicator senza la lettera s

Scrivete alla SR a questo proposito. Sostengono (non io) che c'è un errore e che sarà corretto.

 
fxsaber:

Scrivete alla SR a questo proposito. Sostengono (non io) che c'è un bug e che sarà risolto.

All'inizio hai dichiarato il bug - puoi spiegare cos'è? Cosa c'è che non va? Ecco il codice semplificato:

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:

Scrivete alla SR a questo proposito. Sostengono (non io) che c'è un errore e che sarà corretto.

Ilmessaggio di erroredel compilatore non è del tutto corretto.

Il compilatore tratta l'override del metodo virtuale come un sovraccarico, lo sistemeremo.
 
È questo il messaggio corretto del compilatore?
int Tmp = 2;
  
if (Tmp % 2) // expression not boolean
 

È un bug?

// Добавление элемента в конец произвольного массива
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*'
}
 

Come faccio a sapere il nome di un file dal suo manico?

 
Limitazione della lingua o della sintassi?
struct A
{
  int i;
};

struct B
{
  const A a;
  
  B() : a({0}) // 'a' - constructor not defined
  {
    const A b = {0}; // no problem
  }  
};