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

 
コミカルな状況
class B;

class A
{
protected:  
  int i;

public:  
  void operator =( const B* Value )
  {    
    this.i = Value.i;       // 'i' - protected member access error
    
    // А так можно!
    this.i = ((A*)Value).i; // и нет ошибки: cannot convert from const pointer to nonconst pointer    
  }
};

class B : public A {};


どちらも同じような状況になるのではと思いました。でも、違うんです!

 
Aクラスの中だけでしかできないことです。私には問題なさそうです。
 

fxsaber:

ハンドルネームからファイル名を知るには?

私が記憶している限りでは、どの方法も
 
Комбинатор:
クラスA内でのみ可能です。私には問題ないように見えますが。

失態

    this.i = Value.i;       // 'i' - protected member access error

はすでに修正されていますので、新しいビルドをお待ちください。

 

ошибка

はすでに修正されていますので、新しいビルドをお待ちください。

彼らが一番よく知っている。
 

MetaEditorはファイル名にポイントを追加する

操作の順序。

  • エクスプローラでTest.txtテキストドキュメントを作成します。
  • File/OpenでMetaEditorで開く。
  • 次に、「ファイル/名前を付けて保存...」を選択します。


その結果、ファイル名はTest2.txtではなく、Test2..txtになります。

メモ帳は、他のすべての条件が同じであれば、ファイル名に余分なドットを追加することはありません
 

fxsaber:

はすでに修正されていますので、新しいビルドをお待ちください。

マイクロソフトのコンパイラは、同様のケースで、メソッド(この場合は演算子=)の実装をクラスの外に持ち出すことを理由にして要求するので、我々は、それがどのように正確に修正されているかを見る必要があります。

https://www.mql5.com/ru/forum/1111/page2001#comment_5679732

https://www.mql5.com/ru/forum/1111/page2001#comment_5680465

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.29
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

これは、可能性を狭めるという意味で、言語として間違った振る舞いのように思えます。

struct A {};

class B
{
public:
  const A a;
  
  B( const A &in ) : a(in) // 'a' - constructor not defined
  {
  }
};


constフィールドを構造体として定義する必要があります。コピー演算子が使えると思ったのですが、構文が似ているため、コンパイラは代わりにコンストラクタを要求しています。しかし、それは正しいことではありません。

 
不正確なエラーメッセージ
struct A
{
  const int i;
};

void OnStart()
{
  A a1, a2;
  
  a1 = a2; // '=' - not allowed for objects with protected members or inheritance
}
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber, 2017.05.19 22:35

TimeTradeServerは、あらゆる種類の無意味なものを返すことができます。例えば、TimeCurrentより小さい値。これでは、実用化は全く不可能です。

もし私の考えが正しければ、TimeTradeServerはTimeCurrentを受け取った後に経過時間を計算し、この差を加えることで、将来のTimeCurrentの値をエミュレートするようなものでなければなりません。

さて、Expert Advisorを実行したところ

#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"

void OnInit()
{
  EventSetTimer(1);
}

void OnTimer()
{
  Comment(TOSTRING(TimeTradeServer()) + TOSTRING(TimeCurrent()));
}

どんな無意味なものでも見ることができます。

日付にご注目ください。


このようにTimeTradeServerはローカルタイムを返します。今一度、正しい動作の修正をお願いします。