В MQL нет файла проекта, фактически им выступает mq4 файл, а программа обязана иметь точки входа (при их отсутствии выдаётся ошибка "event handling function not found"). Поэтому при разделении интерфейса от реализации класса, файлом-реализации и интерфейса должны быть mqh файлы.
Typeid()は残念ながら存在せず、静的識別におけるテンプレートの強さ。異なるタスクは異なる方法で解決され、ある方法が悪く、他の方法が良いというのは、煽るような決めつけです。
動的な識別が必要なケースがあったんです。どのソリューションも、ユニバーサルタイプ以外は非常に面倒なものでした。ユニバーサルタイプを実装したクラスによって作られる。
でも、トラブルにも見舞われた。VS 2012からSTL(文字列)の何かが変わり、それ以降、コンパイルできなくなりました。まだ整理していない。
へえ、道しるべじゃなくて、棒読みで笑うんだ。
私の投稿の2番目のリンクの ページには、こう書かれています。
MQL4では、複雑なタイプのオブジェクトを動的に作成することができます。これはnew 演算子を 用いて行われ、作成されたオブジェクトのディスクリプタを返します。
ディスクリプタのサイズは8バイト である。構文的には、MQL4のオブジェクトディスクリプタはC++のポインタに似ています。
例
MyObject* hobject= new MyObject();
繰り返しになるが、C++とは 異なり、 上記の例の hobject 変数は、メモリへのポインタではなく、オブジェクト記述子 である。
私の投稿の2番目のリンクの ページには、こう書かれています。
MQL4では、複雑なタイプのオブジェクトを動的に作成することができます。これはnew 演算子を 用いて行われ、作成されたオブジェクトのディスクリプタを返します。
ディスクリプタのサイズは8バイト である。構文的には、MQL4のオブジェクトディスクリプタはC++のポインタに似ています。
例
MyObject* hobject= new MyObject();
繰り返しになるが、C++とは 異なり、 上記の例の hobject 変数は、メモリへのポインタではなく、オブジェクト記述子 である。
クラスの実装ファイルとインターフェイスファイルの分離について、昨日までにテクニカルサポートに質問しました。そして、答えを得た。
В MQL нет файла проекта, фактически им выступает mq4 файл, а программа обязана иметь точки входа (при их отсутствии выдаётся ошибка "event handling function not found"). Поэтому при разделении интерфейса от реализации класса, файлом-реализации и интерфейса должны быть mqh файлы.
要するに、本質的に論理的な選択肢ではないということです。結局、クラスの実装が書かれたファイルは、クライアントから保護するために、実装ファイルになっています。また、どちらもオープンな形式、つまり.mqh 形式であれば、何のためにこんなことをする必要があるのでしょうか。
クラスの実装ファイルとインターフェイスファイルの分離について、昨日までにテクニカルサポートに質問しました。そして、答えを得た。
要するに、本質的に論理的な選択肢ではないということです。結局、クラスの実装が書かれたファイルは、クライアントから保護するために、実装ファイルになっています。また、どちらもオープンな形式、つまり.mqh 形式であれば、まったく問題ないのでは?
宣言と実装を切り離すことはしない。すべてヘッダーファイルに書いています。この方がずっと便利です。2つのファイルではなく、1つのファイルを管理する必要があるのです。1つのクラスに3つのメソッドしかなければ嬉しいですね。しかし、100人いたらどうでしょう?2つのファイルを比較するのは疲れるでしょう。片方で書いて、もう片方で忘れてしまう...。
ファイルを分割する必要があるのは、たった1つのケースだけです。それは、2つ以上のクラスが互いに参照し合う場合です。このような解決策は避けるべきです。これはC++でも同じです。MQLでどうすればいいのかわからない。
教科書の 中で、特にここに書かれているのはコードです。
以下のフィールドが利用可能です。
なぜ、片方は右で、もう片方は左 なのでしょうか?教科書の 中で、特にここに書かれているのはコードです。
こんな分野もあるんですね。
なぜ * 記号は一方では右に、他方では左に あるのですか?そう書いてある。そんなことはどうでもいいんです。
私自身は、型の右隣のポインタ(int*)と、その左隣の変数をデリファレンスするとき(*pnVal)に「*」演算子を書いています。
そう書いてあるんです。そんなことはどうでもいいんです。
私自身は、"*"演算子は、ポインタの右隣の型(int*)と、デリファレンス時には左隣の変数(*pnVal)を表すように書いています。
。
そう思っていました。おそらく、不注意なプログラマーがサンプルを書いたのでしょう。
そこには、他にも不思議なことがある。
CItem クラスにオブジェクトディスクリプタ m_nextを 割り当てるということでしょうか。
教科書の 中で、特にここに書かれているのはコードです。
以下のフィールドが利用可能です。
なぜ、片方は右で、もう片方は左 なのでしょうか?左でも右でもなく、その間にある。
そう思ったんです。不注意なプログラマーが例を書いてしまったのでしょう。
そこには、他にも不思議なことがある。
CItem クラスにオブジェクトディスクリプタm_nextが割り当てられて いるということでしょうか?
つまり、new演算子で インスタンスを生成する必要がある。