class MySecond: MyFirst
{
void MySecond(MyArg arg):
MyFirst(arg)
{ // Можно код инициализации VMT добавлять здесь. Тогда не будет проблем с виртуальными вызовами.
...............
MyVirtualFunc();
...........
return;
} // Сейчас код инициализации VMT добавляется здесь.
};
だから工場を作れ。そうすれば、問題は解決する。
今のままでも十分作業しやすいんですけどね。オブジェクトはかなり硬い構造になっています。各メンバーの仮想Loadメソッドを呼び出すと、メンバーも同じようにLoadする。各データブロック(オブジェクト)の先頭には、(ロード時の制御のために)タイプのIDが書き込まれます。それだけなんです。自作自演の工場のようなものです。
そのため、ファクトリーと型登録テーブルが必要になります。なかなか解決しない中、ペーパークリップや粘着テープで何とかしています。:)
ガンのファン。
2つ目のアンカー ポイントが未来にある場合、角度は変わります。
また、このオブジェクトはコピー(Ctrlキーを押しながら)する際に問題があります。コピーされず、オリジナルを引きずってしまい、3回目、5回目とコピーにかかることが非常に多い。
OK、素晴らしい。
Slavaさん、(一般的な開発のために)なぜコンストラクタの最初(祖先の初期化の後)に仮想メソッドテーブルを初期化できないのか聞いていいですか?
前にも言ったけどコンストラクタは、階層を作成します。祖先が構築されている間は、子孫に関する情報はない。
もう読みましたよ。そして、それを完璧に理解したのです。そして、読んだ内容を理解した上で質問しました。 写真付きで分かりやすく説明します。
すべて理解する、その ほうが難しい、いろいろと微妙なところがある。すべての暗黙の初期化を最後に書く方が、はるかにシンプルで普遍的です(あなたにとって)。そして、「そんなことをする人はいない」「C++では慣習的に行われていない」等と事前に信じ込んでいるくらいです。
しかし、私たち(ユーザー)にとっては、MySecond()コンストラクタをMyFirstではなくMySecondクラスの領域と考える方がよりシンプルで普遍的、合理的、論理的なことなのです。コンストラクタで仮想関数を 動作させることと、コンストラクタのコードに関する重要かつ深刻な制限をドキュメントで数カ所表現すること、にもかかわらず、サービスデスクやフォーラムに「コンストラクタの仮想バグについて」初心者から重要かつ深刻なメッセージを定期的に受け取ること、どちらが簡単か考えてみましょう。 これも深刻な要因です。初心者はすぐにたくさん期待されますから......。
構造体を含むテンソル演算子はCode Generation Errorになる(ifに置き換えるとうまくいくが)
定期的にエラー4401が発生する
err_history_not_found
以下のインジケーターコード
は、(D1でない場合は)起動時に即座にエラーを出します。というか、ターミナルを起動 し、チャートを開いた後に一度、インジケータを付けるとエラーになります。端末が閉じられていない場合は、起動時にこのようなエラーは発生しません。
しかし、しばらくすると(数時間、私は2時間で十分でした)、すでに開いているチャートでエラーが発生することがわかります。(m30で走らせました)
開発者の皆さん、こんにちは。
MQL5コンパイラで、せめて警告を出すように変更できないでしょうか?
このようなコード上のエラーに対して
if(Flag_Exitl=true) {break;}
この比較条件は正しくありません(==であるべきです)ので、常にbreakになります。
この状況をコンパイラでどのように対処すれば(もし可能であれば)、コードを書くときにぶつかることが少なくなるでしょうか?
(うまくいかないと思いきや、ifで代入と比較を分けてから質問を削除しているようです)。
開発者の皆さん、こんにちは。
MQL5コンパイラを変更して、少なくとも警告を出すようにすることは可能でしょうか?
このようなコード上のエラーに対して
if(Flag_Exitl=true) {break;}
比較条件が正しくない(==であるべき)ため、常にbreakとなる。
この状況をコンパイラでどのように対処すれば(可能であれば)、コードを書くときにぶつかることが少なくなるのでしょうか?
(うまくいかないと思ったので、ifで代入と比較を分けるかもしれないので、質問は削除します)。
条件の書き方が間違っている可能性がありますが、MQL5では許容されています。
Flag_Exitl 変数を true に設定し、Flag_Exitl が true であれば、break するようにします。
一連の動作は、まさにこんな感じです。
画面に表示する必要のないバッファの扱いがよくわからない。
なぜか下のコードによると
1) 何も描かない
2) 両方のバッファを Label1 と呼ぶ
正しいデータが含まれていても
こんにちは。間違った方向に書いているかもしれませんが、正しい方向を示していただければと思います。mt5のWeb APIに関する質問はどこにすればいいのでしょうか?)
念のため、状況を説明しておこうと思います。МТマネージャーとPHPによるWEB APIを持っているのですが...。ロシア語の請求書が作成され、データが送信され、МТマネージャにも表示されるのですが、問題があります。МТマネージャのデータはユニコードで表示されます(「044404300c0438043b0438044f 」 - ユーザー名がこのように見えます)。データ送信時はエンコードもデコードもされず、MTクライアントからは全て正常に作成されるのですが...。少なくとも、どちらを見ればいいのか?(