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

 
MT5のコード(build 2380)をコンパイルすると、またしても無駄な警告が出る問題が発生しました。
開発者の皆様には、不要なコンパイラの警告を 無効にすることをご検討ください。
declaration of 'm_range' hides member   
   in template 'NodeArray<NodeArray<TailArray<int>>>' specified with [T=NodeArray<TailArray<int>>]      
   see previous declaration of 'm_range'        
declaration of 'm_range' hides member
   in template 'NodeArray<NodeArray<NodeArray<TailArray<int>>>>' specified with [T=NodeArray<NodeArray<TailArray<int>>>]
   see previous declaration of 'm_range'

ソースコード、多次元配列プロトタイプ(C++ online:https://onlinegdb.com/Hk7QjyRdL)
#define  PRINT(x) ; Print(#x, ":", string(x))

template<typename T>
class TailArray{
protected:
   int m_index;
   T data[];
   
protected:
   TailArray(){}   
public:     
   TailArray(int size){
      ArrayResize(data, size);
      m_index = 0;
   };
   
   T value(){
      int index = m_index;
      m_index = 0;
      return data[index];
   }
   const T operator=(const T value){
      data[m_index] = (T)value;
      m_index = 0;
      return value;
   };
};

template<typename T>
class NodeArray : public T{
protected:
   int m_range;
   
protected:
   NodeArray(){}   
public:     
   NodeArray(const NodeArray &src){ this = src;}
   template<typename T_int> NodeArray(T_int count, T_int r1) : T(count * r1), m_range(r1){}
   template<typename T_int> NodeArray(T_int count, T_int r1, T_int r2) : T(count * r1, r2), m_range(r1){}
   template<typename T_int> NodeArray(T_int count, T_int r1, T_int r2, T_int r3) : T(count * r1, r2, r3), m_range(r1){}
   
   T* operator[](int index){
      this.m_index = this.m_index * this.m_range + index;
      return &this;
   }
};


#define  MultiArray(type, size) MultiArray##size(type)
#define  MultiArray2(type) NodeArray<NodeArray<TailArray<type>>>
#define  MultiArray3(type) NodeArray<NodeArray<NodeArray<TailArray<type>>>>


template<typename T>
class MultiArrayCreate{
public:
   static MultiArray(T, 2) Size(int range_1, int range_2){
      return (MultiArray(T, 2)(range_1, range_2, 1));
   }
   static MultiArray(T, 3) Size(int range_1, int range_2, int range_3){  
      return (MultiArray(T, 3)(range_1, range_2, range_3, 1));
   }
};


void OnStart(){
   MultiArray(int, 2) arr_2 = MultiArrayCreate<int>::Size(4, 4);
   MultiArray(int, 3) arr_3 = MultiArrayCreate<int>::Size(4, 4, 4);
   
   arr_2[0][0] = 2233;
   arr_3[3][3][3] = 4455;
   PRINT(arr_2[0][0].value());
   PRINT(arr_3[3][3][3].value());
}
 

皆さん、こんにちは。

CodeBaseでの設計とその後の公開で、スクリプトの説明文に画像を挿入する方法を教えていただけませんか?

なぜかYoutubeの動画挿入だけはできるのですが、画像挿入の アイコンがないんですよねー。:(

ありがとうございました。:)

 
gsl17:

皆さん、こんにちは。

CodeBaseでの設計とその後の公開で、スクリプトの説明文に画像を挿入する方法を教えていただけませんか?

なぜかYoutubeの動画挿入だけはできるのですが、画像挿入の アイコンがないのです:(

ありがとうございました。:)

画像挿入ボタンボタンイラスト は、ある程度の最低レーティングから利用可能です。ボタンイラスト ボタンで作業するには明らかにレーティングが足りませんね。

 
Vladimir Karputov:

画像挿入ボタンは、一定の最低レーティングから利用可能です。ボタンを使用するための十分なレーティングがないことは明らかです。

分かりやすい説明ありがとうございます。

それは残念だ...。

追伸:確かに、CodeBaseにスクリプトを載せるのは初めてですね。

 
Bild 2390 mt 5profiler on history works on real data No.
 

テンプレート機能/クラスキャッシュの動作に不具合があります。
( MT5(ビルド2390)で修正 されました)***(up) Undefined Behavior, 内部型 "C" の複雑なラップオブジェクトを何度か作成し、それが全く別のデータ型、多分 "B" か、多分 "int" か、何でも良いのですが、判明した場合...。
( MT5(ビルド2390)で修正 されました)* コンパイルエラー、const ref テンプレート引数として関数ポインタを渡す際のバグ。
( MT5(ビルド2390)で修正 されました)* コンパイルエラー、B<int>オブジェクトはB<void*>クラスオブジェクトの後に作成しても良いが、前に作成するとコンパイルエラーが発生する。


テンプレート機能/クラスワークの不具合。
( MT5(ビルド2390)で修正 されました)**(アップ) コンパイルエラー、テンプレート関数のテンプレートパラメータで内部クラスにアクセスしようとした場合のバグ。
( MT5(ビルド2390)で修正 されました)**(アップ) コンパイルエラー、テンプレート関数のバグ、明示的な型変換で 渡されたポインタは、クラスのように動作し、それ以外はポインタのように動作します。
( MT5(ビルド2390)では修正 されていません)*** Compile Error, 不適切な出力の警告に対する主な主張は「非推奨の動作、hiddenメソッド呼び出しは将来のMQLコンパイラのバージョンで無効になる」です。 現在の実装は雀に大砲を撃っているようなものです。
( MT5(ビルド2390)では修正 されていません)** テンプレート関数の戻り値が、テンプレート関数の引数の型によって設定されるテンプレートクラス内の内部クラスである場合の、コンパイルエラーです。
( MT5(ビルド2390)では修正 されていません)** テンプレートコンストラクタで、継承クラスと内部クラスで同じクラス名を使用している場合に、ベースクラスを呼び出すと、コンパイルエラー、名前空間とスコープのバグが発生します。
( MT5(ビルド2390)では修正 されていません)* コンパイルエラー、オーバーロードされた非テンプレート関数から呼び出された場合、明示的な引数型を持つテンプレート関数呼び出しのバグ。
( MT5(build2390)では未修正) コンパイルエラー、内部クラス定義のバグ - ベースクラス定義時にグローバル名前空間への参照なし。
( MT5(ビルド2390)で修正 されました)** コンパイルエラー、内部クラス使用時のテンプレートクラスコード生成の不具合。
( MT5(ビルド2390)で修正 されました)** コンパイルエラー、テンプレートメソッド/クラス生成時のバグ、テンプレートパラメータの自動置換の処理がスコップからメインプログラムコードに出る。
( MT5(ビルド2390)で修正 されました)* コンパイルエラー、テンプレートクラスがテンプレートメソッドの戻り値として動作する場合、テンプレートクラスのコードが生成されない不具合。
( MT5(ビルド2390)で修正 されました)* 内部構造体をテンプレート関数に渡した場合、受け取ったデータ型を テンプレートクラス内の別の内部構造体のベースデータ型として使用することができないため、コンパイルエラーとなる不具合があります。
( MT5(ビルド2390)で修正 されました)* コンパイルエラー、テンプレートクラス内でテンプレート関数を宣言する際、再利用されるテンプレート型名のチェックが行われないため、予期せぬ動作が発生します。
(MT5(build 2390)で修正)コンパイルエラー、テンプレートクラス/構造体がオブジェクトの場合、"in place created "オブジェクトを返すことに関連する複数の不具合を修正しました。
(MT5(ビルド2368)で修正 されました)* ベースクラスのコンストラクタで、ベースクラスのオブジェクトへのポインタを親クラスへのポインタにキャストする際に、明示的なタイプキャストを行うことができません。
(MT5(build 2390)では修正 されていません) (new) テンプレートパラメータが基底クラスとして機能する場合、テンプレートクラスで継承のためのデフォルトアクセス修飾子を使用するとコンパイルエラーになります。
( MT5(ビルド2390)では修正 されていません)* (new) 明示的なベースクラス参照で代入文を呼び出すと、コンパイルエラーになります。この問題は、テンプレート・パラメータがベース・クラスとして機能するテンプレート・クラスで発生します。


MQLとC++のオーバーロードされた関数の呼び出し優先度の不一致に関する不具合。
( MT5(ビルド2390)で修正 されました)オーバーロードされたテンプレート関数の1つ目が完全に特化されたテンプレートベースクラスを使用し、2つ目が特化されていないテンプレートベースクラスを使用している場合、 **(up) コンパイルエラーとなります。
( MT5(ビルド2390)では修正 されていません)** コンパイルエラー:渡されたパラメーターに適したシグネチャーを持つオーバーロードされたテンプレート関数が存在するにもかかわらず、テンプレート関数のコードを生成する際にコンパイルエラーが発生します。
( MT5(ビルド2390)では修正 されていません)* テンプレートパラメーターの数が異なるオーバーロードされたテンプレート関数を呼び出すと、コンパイルエラー「ambiguous call to overloaded function」が発生します。
( MT5(ビルド2390)で修正 されました)(MT5(ビルド2390)で修正) **(up) コンパイルエラー オーバーロードされたテンプレート関数の呼び出し優先度は、理論的にはコンパイル結果に 影響しないはずのテンプレートパラメータの型に依存しています。
( MT5(ビルド2390)で修正 されました)*** A <= B <= C <= D のクラスを継承し、パラメータ A* とパラメータ B* の 2 つのオーバーロード関数を実装した場合、MQL でその関数に C* または D* オブジェクトを渡すとコンパイル エラーが発生します。
( MT5(ビルド2390)で修正 されました)(MT5(ビルド2390)で修正) ** ランタイム、オーバーロードされたテンプレート関数の呼び出しの優先順位に矛盾がある。
( MT5(ビルド2390)で修正 されました)*** ポインタ型の引数に対して適切なオーバーロード関数を選択する場合、ベースクラスではなく親へのポインタへの型変換を行う関数が優先されるようになりました。
( MT5(ビルド2390)では修正 されていません)*** (new) コンパイルエラー、オーバーロードされたテンプレート関数呼び出しの優先順位。
( MT5(ビルド2390)では修正 されていません)** (new) コンパイルエラー。color データ型を持つオーバーロードされたテンプレート関数にマッチするシグネチャがあるにもかかわらず、color データ型を持つ引数に対して関数を呼び出すと 暗黙の型会話が使用されます。
( MT5(ビルド2390)では修正 されていません)* (new) コンパイルエラー オーバーロードされたテンプレート関数が呼ばれたとき、明示的に特殊化されているにもかかわらず、テンプレート関数がデフォルトで呼ばれるため、スタックオーバーフローになる...
( MT5(ビルド2390)では修正 されていません)* (new) CompileError, 関数へのポインタの配列を使用した場合、そのポインタを介して関数を呼び出すとコンパイルエラー となる。


MetaEditorに関連する不具合。
( ME5(ビルド2390)では修正 されていない)*** (new) Debugger,静的 構造体メソッドで ブレークポイントがクラッシュすると、MT端末がハングアップするようになりました。
( ME5(build 2390)では修正 されていません)** (新)コンパイルで、コンパイルエラーの記述が256文字に収まらないため、必要な部分がカットされ、どのデータ型のエラーが発生したのかが分からなくなっています。
( ME5(build 2390)では修正 されていません)** デバッガ、StepInto (F11)、ブレークポイント設定が機能しない。
( ME5(build 2390)では修正 されていません)** デバッガでブレークポイントが発生した後、(F5)キーを押してもコードが実行されず、再度同じブレークポイントが発生するようになりました。
( ME5(build 2390)では修正 されていません)*(new) コンパイル時、Error Description と Parameter info の関数テンプレートパラメータのシグネチャが正しくありません。
( ME5(build 2390)では修正 されていません)* (新)MetaEditorで、コード全体ではなく、アプリケーションの必要な部分を選択した場合、含まれる「選択中」と「逆方向」に対して、置換(Strl+H)機能が動作しない。


関数実行の遅さに関する不具合、コードオプティマイザーの動作に関する不具合。
( MT5(ビルド2390)で修正 されました)**(アップ) ArrayResize を使用して配列に一度に 1 つの要素を追加するとき、それらのためにメモリが予約されているにもかかわらず、ランタイムで大きなオーバーヘッドが発生します。


提案します。
(new) - ME search/replace by current Project を追加。リファクタリング中に各ファイルを調べて発生を検索するのは、何となく良くないので。
リファレンス(新規) - MEで、コンパイル時に空の列File、Line、Columnに、インクルードされたソースファイルに関する適切な情報を入力するようになりました。
link- クラスの静的メソッドに対するインテリセンスの作業をベースにした、名前空間の機能に対するインテリセンス・サポートの導入について。
link- const ref 関数の引数として、リテラルや一時変数を渡す機能を提供します。
link- プロジェクトタブでプロジェクトファイルを移動 する際、移動したファイルが開いていてMEタブにある場合、自動的にその場所のパスを更新するようにしました。
link- MQLにtypedef宣言機能を導入する。
link- デフォルトのコピーコンストラクタと代入演算子を強制的に生成できるようにすることについて。

 
MEはコンパイル時にプラグイン可能なmqhのパスが表示されず、名前だけが表示されるのが残念です。
 
取引履歴を「注文と取引」モードで表示した場合、列によるソートができない。このため、行われたばかりの取引はリストの末尾に行かず、中程に行くものもあります。
 
fxsaber:

簡単な例です。期間を指定したMAUの配列が必要です。

各MAPは、同じ型のオブジェクトである。MASKがピリオドで一義的に指定されていることは明らかです。したがって、それをコンストラストにするのは論理的なことです。


他の言語では、単にポインタの配列を作るだけです。MQLでは、そのような自由はありません。

非論理的でしょう。変えるつもりがないなら、制約にする必要はないということです。変数をprivateにすれば十分です。

何か得るものがあれば論理的だが、自分で問題を作って しまっただけだ。
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.04.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Sergey Dzyublik:

MQLのオプティマイザやコンパイラがどのように設計されているかご存知でしょうか?
単純な型のconstフィールドがこの目的に使われていないと、どうして断言できるのでしょうか?

オプティマイザーは何の関係もない。