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

 
fxsaber:

OBJ_CHARTを作成し、チャートの左上隅をマウスでドラッグしています。ドラッグ中にObjectDeleteが呼び出さ れ、成功する。MT5です。

またOBJ_CHARTをドラッグして、そのCHART-properties(例えば、ChartNavigate)を変更すると、対応するビジュアライゼーションが存在しません。
 
このトピックに関係のないコメントは、「各サブウィンドウがどのインジケータに属しているかを判断する方法」に移動しました。
 
A100:

コンパイルエラーです。

ビルド1447で登場
投稿ありがとうございます!渡されたパラメータの定数制御を修正しました。

どちらの場合もコンパイルエラーが 発生するようになったので、エラーを回避するためにコードを変更する必要があります。
template<typename T>
void f1( const T* const & a[] ) {}    << добавлена константность ссылки
class A {};
void f2( const A* const & a[] ) {}    << добавлена константность ссылки
class B {
        void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
        void g2() const { f2( a ); } //нормально
        A *a[];
};
 
константность ссылки

そんなのどこにも書いてないぞ。これがスタンダードなのでしょうか?

 
Ilyas:
どちらの場合もコンパイルエラー になりますが、エラーを回避するためには、コードを変更する必要があります。

この矛盾も確認してください(こちらは反対側-下の方に誤りがあります)。

template<typename T>
void f1( const T& a[] ) {}
class A {};
void f2( const A& a[] ) {}
class B {
        void g1() const { f1( a ); } //нормально
        void g2() const { f2( a ); } //error: 'a' - parameter conversion not allowed
        A *a[];
};
 

MQL5はメモリとどのように連携しているのですか?

例えば、次のようなコードがあります。

class Alfa {}
class Beta
  {
private:
   Alfa  *ptr_a;
   Alfa   obj_a;
public:
   Beta(void) { ptr_a = new Alfa(); }
  ~Beta(void) { delete ptr_a; }
   Metod(void) {...}
  }
//---

int OnInit(void) {
   Beta *ptr_obj = new Beta();
   Beta obj;
//---
   return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
   delete ptr_obj;
}

によって、ヒープ内のメモリが ptr_obj オブジェクトに割り当てられ、obj オブジェクトには自動的なメモリが割り当てられます。これらのオブジェクトに対して、MQL5メモリマネージャの動作が明確である場合。

1. ptr_obj オブジェクトのptr_a オブジェクトは、「ヒープ」内のメモリを確保する。

2.オブジェクトobjの オブジェクトobj_aの メモリは自動的に確保される

このような場合、MQL5のメモリーマネージャーはどのように構成されるのでしょうか。

3. オブジェクトptr_objの オブジェクトobj_aは どのメモリ領域に位置するか。

オブジェクトobjの オブジェクトptr_aは、メモリのどの領域に位置するか。

 
A100:

この矛盾(ここでは逆)もご確認ください。

これは正しい、ここではタイピングで、T = A *。
 
void f( const A* &Array[] );

この転送では、配列の要素(とサイズ)を入れ替えることは可能ですが、要素そのものを入れ替えることはできません。そうだろ?

void f( const A* const &Array[] );

そして、ここでも要素(とサイズ)の入れ替えはできない。これでいいのでしょうか?

 
fxsaber:

そんなのどこにも書いてないぞ。これがスタンダードなのでしょうか?

書かないように書かれている:定数オブジェクトへの ポインタの定数配列への参照があるはずだ
 
fxsaber:

この転送では、配列の要素(とサイズ)を入れ替えることは可能ですが、要素そのものを入れ替えることはできません。そうだろ?

そして、ここでも要素(とサイズ)の入れ替えはできない。これでいいのでしょうか?

はい、その通りです。