エラー、バグ、質問 - ページ 1297

 
_Konstantin_:

オーバーライドしようとしているのですが、定数メソッドでは非定数メソッドを使用できないため、call non-const method for constant object エラーになります。仮想定数メソッドを正しくオーバーライドする方法が自分でもわからない。

解決方法は、constメソッドでconstでないメソッドを使わないことです。そして、これを上書きすることは一切できません。
 
A100:
解決策は、constメソッドにconstでないメソッドを使用しないことです。そして、それを飛び越える術はない。

まあ、それはそれとして、MQは、作成されたソート機構で使用されることを意図しているCompare仮想メソッドを数年間変更しようとせず、その再定義なしではこの機構は単に機能しないのです。その結果、MQが意図するソート機構を使わず、独自のソート機構を作ることになる。

MQL4でOOPを導入した当初から独自のソート機構を作り、MQL5でこの点が修正されたと甘く考えていたのですが、間違っていました :)

 
_Konstantin_:

まあ、それはそれとして、MQは数年前からCompare仮想メソッドを変更したがらず、これは作成されたソート機構で使用することを目的としており、その再定義なしではこの機構は単に機能しないのです。その結果、MQが意図したソート機構を使わずに、自分でソート機構を作らなければならなくなった。

私はMQL4でOOPを導入した当初から独自のソート機構を作り、この点はMQL5で既に修正されていると甘く考えていたのですが、それは間違いでした :).

const修飾子は使えないんですよね?

class IntObject : public CObject
{
public:
   int Value;
   virtual int Compare(const CObject *node,const int mode=0) const
   {
      const IntObject* intObj = node;
      if(intObj.Value < Value)return MORE;
      else if(intObj.Value > Value)return LESS;
      return EQUAL;
   }
   IntObject();
   IntObject(int value){Value=value;}
};
 
C-4:

宗教上、constの修飾語を使うことはできないのでしょうか?

別のタイプのエラー(定数に対してconstでないメソッドを呼び出す)が発生します。 )

#define  NO_CONST
class IntObject : public CObject {
public:
   virtual int f(const CObject *node ) NO_CONST { return 0; }
   virtual int Compare(const CObject *node,const int mode=0) const { return f( node ); }
};
根本的な理由で克服できない
 
A100:

別のタイプのエラー(定数に対してconstでないメソッドを呼び出す)が発生します。 )

根本的な理由で克服できないのです。
そうでないわけがない。定数オブジェクトの中で呼び出されるメソッドを定数化すればいいのです。
 
C-4:
そうでないわけがない。定数オブジェクトの中で呼び出されるメソッドを定数にすればよいのです。
f() は、それが可能である場合にのみ const にすることができます。
class IntObject : public CObject { public:
        int i;
   virtual int f(const CObject *node ) const { return i = 0; } //ошибка
};
 

質問があるんだけど、誰か教えてくれないかなー。

オフラインで1/EURUSD,GBPUSDの合成チャートを作成し、EquityにEURUSD-1 GBPUSD+1を設定します。

同じチャートとインジケータラインが表示され、ほとんど差がないhttps://charts.mql5.com/7/422/synthetic-m15-alpari-limited-6.png

そして、2つ目のオフライン合成チャートEURUSD,1/GBPUSDを作成し、EURUSD+1 GBPUSD+1をエクイティに設定します。

チャートとインジケータの行が全く 同じになるhttps://charts.mql5.com/7/422/synthetic-m15-alpari-limited-5.png

最も可能性の高い理由は、EUR-USDはパリティに近いため、1/1.08で反転すると歪みが小さく、GBPUSDはパリティから遠いため、1/1.48だとより歪んでしまうからです。

楽器を反転させる正しい方法を教えてください。

 

以前は問題なかったのですが、Equityインジケータ(添付)のSymbol_Side_Aパラメータに 28個の商品の行を設定することができなくなりました。

eurgbp-0.1 eurusd-0.1 gbpusd-0.1 eurchf-0.1 eurcad-0.1 euraud-0.1 eurnzd-0.1 eurjpy-0.1 audusd-0.1 nzdusd-0.1 usdcad-0.1 usdchf-0.1 usdjpy-0.1 gbpaud-0.1 gbpcad-0.1 gbpjpy-0.1 gbpchf-0.1 nzdjpy-0.1 audjpy-0.1 cadjpy-0.1 chfjpy-0.1 audcad-0.1 nzdcad-0.1 audchf-0.1 audnzd-0.1 cadchf-0.1 nzdchf-0.1 gbpnzd-0.1

何らかの理由でデータの一部が切り離され、この行には表示されません。Symbol_Side_Aの行をアクティブにしたときだけ表示されます。何が問題なのでしょうか?アドバイスをお願いします。

私のMT4-765の端末です。ALPARIとRVDに問題あり、GKFXはOK!不思議だ!

ファイル:
 

アップロードしたファイルの名前が変わらないようにフォーラムを作るのはそんなに難しいことなのでしょうか?通常の掲示板のように!?

上記のEquityHedgeGraph2(v670)の インジケータをダウンロードしました。では、なぜ名前がぐちゃぐちゃになったのでしょうか?

 
パラメータリスト内はコメント不可 #define
#define  MACRO( X/*комментарий*/ )       (X) //ошибка компиляции
が、特に複数のパラメータがある場合は必要かもしれません。