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

 
コンパイルエラー
struct STRUCT
{
  long l;
  
  STRUCT( void )
  {
  }
};

union UNION
{
  STRUCT Value; // 'STRUCT' has constructor and cannot be used as union member
};
 

1.ドキュメントに組合の 記述があるのはいつ頃ですか?

2.シンプルな 構造に置き換わるか?

3.ドキュメントで構造体について説明されているように、ユニオンの 型変換はサポートされるのでしょうか?

 

ここでは、ユニオンを使って、構造体をchar配列にコピーする方法を紹介します。

struct DATA
  {
   int      var1;
   uint     var2;
   float    var3;
   double   var4;
  };

union NAME_BIT
  {
   char  buff[20];
   DATA  data;
   NAME_BIT() {
      ArrayInitialize(buff, 0);
   }
  };

int OnInit() {
   NAME_BIT _space, _un_space;
   _space.data.var1 = 100;
   _space.data.var2 = 78;
   _space.data.var3 = 1.999 f;
   _space.data.var4 = .0357;
   
   ArrayCopy(_un_space.buff, _space.buff);
   
//---
   return INIT_SUCCEEDED;
}

ということで、こちらで 問題を解決してみてください。実際、_spaceに あったものはすべて_un_spaceに コピーされましたが、配列バッファのサイズを忘れないように構造体のアライメントについての主なものは、私は構造体のフィールドの位置を変更し、データはまだ正しくコピーされますが、それは構造体のアライメントに固執する方がよいです。松葉づえですが、少なくともそういうことです ))

 
Alexey Viktorov:

なぜ、配列が2回ゼロになるのですか?

)) 削除し忘れ、初期化だけで終了、すでに修正済み))
 
F7でMetaEditorがクラッシュする。
union UNION
{
  uchar Bytes[sizeof(MqlTick)];
  MqlTick Tick;
};

void OnStart()
{
  UNION a, b;
   
  a = b;
}
 
Konstantin:

配列のサイズを定数として宣言する必要があるためと思われますが、特にMqlTickの サイズは明らかに変化しないためです ))
配列は定数として宣言されます。エディタークラッシュ。
 
fxsaber:
F7でMetaEditorがクラッシュする。

同じ曲で、a = bの コピーに起因する可能性が高い; それがなければ、すべてがうまくいく。
 
fxsaber:
配列で、定数として宣言される。エディタークラッシュ。

は削除する時間がありませんでした))
 
組合にテンプレートの利用を追加して、このようなことができるようにする予定があるかどうか教えてください。
template<typename T>
union structToBytes
{
  uchar bytes[sizeof(T)];
  T data;
};
 

MT5でテストエージェントのキャッシュをクリアする時間を教えてください。

しかし、私の場合はそうなりました。最適化した後、実際のティックでテストを実行すると、この場合は6GB分のキャッシュが作成されます。 テスト日を変更すると、キャッシュは解放されます。

しかし、ここで私はキャッシュが5分で上書きされます持っている - それは正常ですか? あなたがテストを再起動しない場合、すなわち、コンピュータから離れて行き、戻って来て、彼は再びあなたにこことそこに6GBを書き込み、ないハードドライブが十分ではありません、消去されます。

テスト日を変更した時やアドバイザー、端末をアンロードした時などにキャッシュをクリアする方が理にかなっているのでは?