初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 179

 
Reshetov:

これは、それ自身へのポインタではなく、オブジェクトの実装におけるフィールド識別子と関連づけられたポインタである。

つまり、あるオブジェクトのメソッドにフィールドと同じ識別子を持つローカル変数があるかもしれない。その場合、これを利用して、オブジェクトフィールドへのポインタとローカル変数へのポインタを区別することができるのである。

どのような用途に使えるか、例として使えるか?
 
Barbarian2:
どのような目的で使用できるのでしょうか? 例を挙げていただけますか?
これはクラスのコンストラクタで 最もよく使われる方法で、新しい識別子を作らないようにするためです。
 
Barbarian2:
しかし、どのような目的で必要なのでしょうか?
class node
{
   public:
      void LinkWithNode(node* childNode)
      {
          if(CheckPoint(linkNode) != POINTER_INVALID)
             this.childNode = childNode;
      }
   private:
      node* childNode;
};

class LineNode : node
{
   public:
      LineNode(node* parentNode)
      {
         parentNode.LinkWithNode(GetPointer(this));
      }
};

この場合、LineNodeを作成する際に、現在のLineNodeインスタンスが属する親ノードを指定する必要があります。親ノードは、このインスタンスを参照によって参照することができるようになります。この例では、thisという単語が2回使われています。最初のケースでは、thisという単語が、childNode変数が特に現在のクラスを参照していることを指定し、thisを持たないchildNodeは、同じ名前のLinkWithNodeメソッド変数であることを指定します。2番目のケースでは、これはクラスの現在のインスタンスを返し、GetPointerはそれへのポインタを受け取 ります。これにより、LineNodeを生成した瞬間にバインドすることができます。

 
C-4:

この場合、LineNodeを作成する際に、現在のLineNodeインスタンスが属する親ノードを指定する必要があります。親ノードは、このインスタンスを参照によって参照することができるようになります。この例では、thisという単語が2回使われています。最初のケースでは、thisという単語が、childNode変数が特に現在のクラスを参照していることを指定し、thisを持たないchildNodeは、同じ名前のLinkWithNodeメソッド変数であることを指定します。2番目のケースでは、これはクラスの現在のインスタンスを返し、GetPointerはそれへのポインタを受け取ります。そのため、LineNodeを生成した瞬間にバインドすることが可能である。

つまり、2つ目のケースでは、コードの削減につながるのでしょうか?
 
Barbarian2:
i.e. 2番目のケースでは、コード削減につながるのでしょうか?
どんな略語であれ(この場合)、あなたは間違ったことに焦点を当てています。 その使い方は様々です。重要なのは、thisが使われているオブジェクトのインスタンスの同義語であることを理解することです。 クラスを定義するとき、thisのインスタンスがまだない場合、プログラマーが何を意味しているかをコンパイラに伝える唯一の方法はthisを使うことです。
 
Barbarian2:
i.e. 2番目のケースでは、コード削減につながるのでしょうか?

いいえ、そうではありません。これにより、すでに定義されて いるクラスのインスタンスを 制御することができる。これを知っていれば、特定のインスタンスに独自の振る舞いを課すことができる。これにより、高い柔軟性と抽象度を実現しています。

 

ひとことお願いします。mql4から5に移行するのですが、1000、10kバッファ用のインジケータを書こうと思って います。バッファに変数で名前を付けることは可能ですか?

のように

while( a<1000)

{

a++ B++

バッファ名 = buff+a

buff(a)=iMA(null, B,) }.

そして、その後のバッファ処理も同じようにループさせながら

または、mql5の新機能で時間やコードを削減する他の方法。

 
Andrei-1:

まず、バッファは256個が限界です(間違っているかもしれません)。

また、バッファはクラスに入れて、エイリアスを与え、エイリアスで検索することもできますので、大丈夫です。

 
ありがとうございます、検討させていただきます。
 
Andrei-1:

どこかの記事でtol64を 見た、私は一目で覚えていない、それを探してください。

TheXpert です。

まず、バッファは256個が限界です(間違っているかもしれません)。

そして、バッファはすべてOKで、クラスに入れて、エイリアスをつけて、エイリアスを頼りに検索すればいい。

ヘルプの「カスタムインジケータで使用できるインジケータバッファの 数は制限されていません。"とありますが、どこかに512のことが書いてあったので、どうなんでしょう。
理由: