MQL5におけるOOPに関する質問 - ページ 86

 
Igor Makanu:

然もありなん

が、要はスタティックなメソッドで 使いたいのではと推測しています

テストが必要なのですが、方法がわからないので、質問しました。


UPD: 昨日このトピックをググったら、プライベートデストラクタについての言及がたくさんあった。

静的メソッドはこのポインタを持たず、そのポインタによって何かを行うことはできません。

プライベートデストラクタは、オブジェクトがオブジェクト自身によって削除されることを保証しています。しかし、上記で述べたように、私の意見では避けるべき良い習慣ではありません(ただし、時にはかなり便利で、SEVERALなケースでは使っても良いと思います)。

 
Georgiy Merts:

静的メソッドはこのポインタを持たず、このポインタに対して何もすることができません。

私はあなたのメッセージを誤解しているかもしれませんが、私はメソッドがこれへのポインタを持っていないことを認識している 、唯一のオブジェクトのインスタンス自体がありません 、私は静的なメソッドクラスのフィールドから利用可能であるため、書いた、そして最も可能性の高いあなたは削除で操作することができます。

このデザインを見るのが目的です、私はやったことがありません、一般的な方法ではありません。


Sergey Dzyublik:

1) 静的メソッドからの、アクセスは禁止する。
"delete &this; "はどこだ?- https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) プライベート・デストラクタはスタック上にオブジェクトを作成することを禁じていますが、new演算子を通して今度はヒープ上に作成することが可能です。

ここで、delete &thisのもう一つの使い方を紹介します。

ありがとうございます、チェックしてみます、便利ですね。




忙しい、修理が大変、また後で聞くから...。を持つメソッドをベースクラスが持っていた場合、どうなるのでしょうか?

delete &this;

で、派生クラスからベースクラスを削除したメソッドを呼び出す......。実用的な目的はないが、とりあえず考えてみたい。

 
Igor Makanu:

メッセージを誤解しているかもしれませんが、メソッドがthisポインタを持つのではなく、オブジェクトのインスタンス自身だけが持つという認識です。クラスのフィールドは静的メソッドから利用でき、ほとんどの場合、削除で操作できるため、このように書きました。

このデザインを見る目的は、今まで試したことがなく、一般的な方法ではないので


ありがとうございます、参考になります、チェックしてみます。




忙しい、全部修理、後でまた聞くから...。を持つメソッドをベースクラスが持っていた場合、どうなるのでしょうか?

で、派生クラスからベースクラスを削除したメソッドを呼び出す......。実用的な目的はないが、とりあえず考えてみたい。

気にしないでください、絶対に必要ありませんから。

そういうことに対処する前に、言語の基本を 理解する必要があります。

 
Koldun Zloy:

気にしないでください、絶対に必要ありませんから。

それは正しい表現ではありません。視野を広げなければ、当然必要ないでしょう。

Koldun Zloy:

そんなことに取り組む前に、言語の基本を 理解する必要があります。

私はできる限りそうしていますが、一般的にMQLのタスクの90%以上はゼロから解決していますし、そのほとんどはすでに解決されていて自由にアクセスできます。



を削除するために &this; ......私は、そのオープンを監視し、requotesで注文を再開することができたクラス-オーダーを使用しました......などなど、いろいろあります。

このオブジェクト(orderクラス)を別のクラスから作って削除したのですが、delete &this;を使った 方が便利かもしれませんね。

 

これは不具合なのか、機能なのか疑問ですが)

クラスインスタンスの中に構造体があります。

構造体の中身が見えるようにドットを入れました。
しかし、角括弧をつけた場合のみ表示される。
構造は1つのインスタンスになっていますが、

、クラスが配列要素 でなければ問題は解決されます。




と、"つっこみ "のためのコードそのものです。

class ABC
{   
   public:         
           struct ST
           {    
              int r;
              int U;
                  ST() {r=0; U=0;}           
           };
           ST st;
};
ABC abc[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {

abc[0].st.r;

   return(INIT_SUCCEEDED);
  }
 
Pavel Verveyko:

これは不具合なのか、機能なのか疑問ですが)

クラスインスタンスの中に構造体があります。

構造体の中身が見えるようにドットを入れました。
しかし、角括弧をつけた場合のみ表示される。
構造は1つのインスタンスになっていますが、

、クラスが配列要素 でなければ問題は解決します。




と、"つっこみ "のためのコードそのものです。

かもしれません)

 
Maxim Kuznetsov:

そうかもしれませんね)

たぶん)でも、ツールチップについての指摘は変わりません)

 
Pavel Verveyko:

これは不具合なのか、機能なのか疑問ですが)

クラスインスタンスの中に構造体があります。

構造体の中身が見えるようにドットを入れました。
しかし、角括弧をつけた場合のみ表示される。
構造は1つのインスタンスになっていますが、

、クラスが配列要素 でなければ問題は解決します。




と、"つつく "ためのコードそのものを

別の編集者のバグ(
 

https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/coding_style_best_perf.html

Везде, где это возможно, заменяйте глобальные переменные локальными.

グローバル変数へのアクセスは、ローカル変数へのアクセスよりも多くのコマンドを必要とします。また、明示的に指定しない限り、コンパイラは、呼び出されたサブルーチンがすべてのグローバル変数の値を変更できるものと見なします。そのため、サブルーチン呼び出し後、すべてのグローバル変数の値が繰り返しメモリにロードされ、性能劣化につながる。


グローバル変数(このスレッドと他の人が共有していない変数)にアクセスする必要がある場合、その値をローカル変数にコピーして、そのコピーで作業します。

ローカルコピーを使用すると、グローバル変数に一度だけアクセスする場合を除き、パフォーマンスが向上します。


私の例で言えば

class CEA
{
private:
   double            _Ask, _Bid;
public:
   void              onTick(const MqlTick &tick);
};
//+------------------------------------------------------------------+
void CEA::onTick(const MqlTick &tick)
{
   _Ask = tick.ask;
   _Bid = tick.bid;
}

onTick()メソッドでAskとBidの値をコピーし、残りのメソッドで_Askと_Bid(仮想取引)を使用します。

グローバル変数を扱うような感じになるのでしょうか?

ZS: オプションとして、もちろん、すべてのメソッドで参照 &tick を渡すことができますが、再度、何がより効果的であるかについて質問します。

 
Igor Makanu:

https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/coding_style_best_perf.html


私の例で言えば

onTick() メソッドで asc と bid の値をコピーし、残りのメソッドで _Ask, _Bid (仮想取引) を使用します。

グローバル変数を扱うような感じになるのでしょうか?

ZS: オプションとして、もちろんすべてのメソッドに&tickを参照で渡すこともできますが、より効果的な方法は何なのか、もう一度質問します。

イゴール・マカヌ

https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/coding_style_best_perf.html


私の例で言えば

onTick() メソッドで asc と bid の値をコピーし、他のメソッドで _Ask, _Bid (仮想取引) を使用する。

グローバル変数を扱うような感じになるのでしょうか?

ZS: オプションとして、もちろん、すべてのメソッドで参照 &tick を渡すことができますが、再度、何がより効果的であるかについて質問します。

質問です。ヤギは何のためにいるのか?1つのメソッド、1つのクラスで、球形の馬の中で、そう物理的な真空の中で(まあ私は酔っているのですが)))、なら、はい、それは意味があるのです。そして、実際のプロジェクトでは、グローバルレベルでのクラス、またはハンドラの先頭にこのすべてのtrichomudin(余分なバーボンで申し訳ありません)))を処理する単一のいずれかと、そこから直接任意の場所に要求する))))。