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

 
A100:

これは本当に何も変わりません - コンパイルエラー(私はタブレットを持っている - Borlandのコンパイラ)。

うーん、じゃあ、言語規格を見て、誰のコンパイラがめちゃくちゃなのか確認する必要があるんですね。
 
Alexey Navoykov:
うーん、じゃあ、言語規格を調べて、誰のコンパイラが混乱してるのか確認しないといけないね。
2つ目のオプションも同様です

#ifdef __BORLANDC__
class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return b->i; } //Error: E224
#endif

VS 2010は、B*からA*への暗黙の変換によってprivateを克服するため、失敗します。


#ifdef __BORLANDC__

class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return ((A *)b)->i; } //нормально

#endif

 
Alexey Navoykov:
うーん、じゃあ、言語規格を調べて、誰のコンパイラがめちゃくちゃなのか確認しないといけないね。
gcc 7.2は、最新版をコンパイルします。
Compiler Explorer - C++
  • About the author
  • godbolt.org
These settings control how Compiler Explorer acts for you. They are not preserved as part of shared URLs, and are persisted locally using browser local storage.
 
Комбинатор:
gcc 7.2は、最新版をコンパイルします。

その結果、次のような表が出来上がりました。

class B;
class A {                                       //MQL //BCC //VS2010 //gcc
        int f1( B *b ) { return       b .i;   } // -     -     +        +
        int f2( B *b ) { return       b .g(); } // +     -     +        +
        int f3( B *b ) { return ((A *)b).i;   } // +     +     +        +
        int f4( B *b ) { return ((A *)b).g(); } // +     +     +        +
        int f5()       { return       b .i;   } // -     -     +        +
        int f6()       { return       b .g(); } // +     -     +        +
        int f7()       { return ((A *)b).i;   } // +     +     +        +
        int f8()       { return ((A *)b).g(); } // +     +     +        +
//---
        int g() { return 0; }
        int i;
        B *b;
};
class B : public A {};

また、msdnは、「アクセスコントロールは、オブジェクトが不正に使用されるのを防ぐのに役立つ」と述べている。この保護は、明示的な型変換(タイプコンバージョン)を行う際に失われます。
 

皆さん、こんにちは。

ビジュアライゼーションが有効なときにストラテジーテスターに表示されるインジケーターウィンドウを削除する方法があれば教えてください。

MT5ではwizardaで生成されます。

MQL5の ドキュメントにStrategy TesterでIndicatoReleaseが動作しないことが書いてありました。(とりあえずOnDeinitにこの関数を挿入してみたところ、ハンドルが宣言されていないと文句を言われるようになりました。宣言すると、他のエラーが発生します)。

他に方法はないのでしょうか?

 
Ahmet Garyagdyyev:

皆さん、こんにちは。

ビジュアライゼーションが有効なときにストラテジーテスターに表示されるインジケーターウィンドウを削除する方法があれば教えてください。

MT5ではwizardaで生成されます。

MQL5の ドキュメントにStrategy TesterでIndicatoReleaseが動作しないことが書かれていました。(とりあえずOnDeinitにこの関数を挿入してみたところ、ハンドルが宣言されていないと文句を言われるようになりました。宣言すると、他のエラーが発生します)。

他に方法はないのでしょうか?


すべてのインジケータを含むテンプレートを、過去に保存した任意のものに変更することができます。

 
A100:

その結果、次のような表が出来上がりました。

VSとgccは、長い間、ボーランドよりもリファレンス*(少なくとも大きくはバグが少ない)と見なされてきました。私自身、長年ボーランドを使ってきましたが、それ以外の長所を踏まえて。

PS.*これは私の個人的な意見ではないので、議論するつもりはありません。

 

STL c++ ライブラリを実装しようとしたことがある人はいますか?できればコードベース配置で、検索するとダメと出ますが、vrdug ....確かに全てではありませんが、基本的なものはあります。テンプレートを使ったいくつかの通常のコンテナや、auto_ptr(確かに自分で書きましたが、このようなプリミティブを自分で書くのは馬鹿げています)です。
なぜstd µlがnon-templateなのか、なぜSTLのメソッド/クラスの類似品に新しい名前を発明しなければならないのか、理解できません。

 

間違いを見つけたので、コンパイルされたテキストを完全に挿入するのではなく、スクリプトから断片を抜き出すことにします。

class Source : public CObject
{
public:
   upindex_t start, top, lstart, ltop;
};

CArrayObj sourcear;

do
{
   Source *new_src = new Source;
   new_src.start = last.start;
   new_src.top = last.top;
   new_src.lstart = prev_prev.start;
   new_src.ltop = prev_prev.top;
   if( ! sourcear.Add(new_src) )
      return;
}
while(...);

for(int i = 0;  i < sourcear.Total();  ++ i)
{
   Source cursrc = (Source*)sourcear.At(i);  //!!!!! Это не вызывает ошибки во время компиляции
}

例)キャスト:CObject*→ Source*→Source

それとも、何かトリッキーなMQL Specificなのでしょうか?


ZS: そして、そのような文字列が食べられているのです。

Source new_src = new Source;

それはナンセンスだ。言語内のcons/operatorをコピーしていない、デリファレンスしていない。どうしたんだ?

 
pavlick_:

それとも、何かトリッキーなMQL Specificなのでしょうか?

class A {};

void OnStart()
{
  A a = new A;
}

デフォルトのコピー演算子が発動する。