2013年11月05日

MQL5のオブジェクトポインタ

MQL5にはポインタがありません。ありませんが、オブジェクトポインタはあります。

Object Pointers
http://www.mql5.com/en/docs/basis/types/object_pointers

しかしC++のようなポインタではないようです。

In MQL5, there is a possibility to dynamically create objects of complex type. This is done by the new operator, which returns a descriptor of the created object. Descriptor is 8 bytes large. Syntactically, object descriptors in MQL5 are similar to pointers in C++.
(略)
Again, unlike C++, the variable hobject from the example above is not a pointer to the memory, it is a descriptor of the object.


descriptor(記述子?)というのに置き換わっているそうです。そのためではないでしょうけど、メンバ変数やメンバ関数をアクセスするときに、->(アロー演算子)ではなく .(ドット演算子)を使います。ちょっと混乱しそうです。


オブジェクトポインタの中身を見てみることにしました。



//クラス作成
class C1{};
class C2{};
class C3{};
class C4{};

//とりあえずオブジェクト3つ作ります
C1* pObj1 = new C1();
C2* pObj2 = new C2();
C3* pObj3 = new C3();

delete pObj2; //真ん中のC2だけ解放

C4* pObj4 = new C4(); //新たに作ります

//出力
Print("pObj1 = ", pObj1);
Print("pObj3 = ", pObj3);
Print("pObj4 = ", pObj4);

//残りを解放
delete pObj1;
delete pObj3;
delete pObj4;


結果
pObj1 = 1
pObj3 = 3
pObj4 = 2

オブジェクトポインタは1から始まる整数となりました。そして欠番となったところから番号が割り当てられるみたいです。
posted by ロンド at 17:50| Comment(0) | MT5 | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください