エラー、バグ、質問 - ページ 2064

 
fxsaber:
言語バグ

ユーザーコードのバグがバグでない:InitIndicators(CIndicator*)メソッドの欠落

 
A100:

ユーザーコードのエラーはバグではありません:InitIndicators(CIndicator *)メソッドがありません。

sの文字が抜けているが、コンパイラのメッセージが 誤っているため、SDが修正にあたった。

 
fxsaber:

SDが修理に取りかかりました。

エラーが含まれていないものを修正することはできません。<Indicator.mqh> ファイルをご覧ください -CIndicator クラスに s の文字がありません。
 
A100:
エラーが含まれていないものを修正することはできません。<Indicator.mqh> ファイルを見てください - CIndicator クラスに s の文字がありません。

そのことをSRに書いてください。彼らは(私ではなく)「誤りがあるので修正する」と主張しています。

 
fxsaber:

そのことをSRに書いてください。彼らは(私ではなく)バグがあり、修正されると主張している。

元々バグがあるとのことですが、どのようなバグなのか説明していただけますか?何がいけないのでしょうか?以下は、その簡略化したコードです。

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:

そのことをSRに書いてください。彼らは(私ではなく)「誤りがあるので修正する」と主張しています。

コンパイラの エラーメッセージは、まったく正しくありません。

コンパイラは仮想メソッドのオーバーライドをオーバーロードとして扱うので、それを修正する。
 
これは正しいコンパイラーメッセージ でしょうか?
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
  }  
};