class A {
public:
booloperator !() { return ( true ); }
booloperator +() { return ( true ); }
};
int g( A& a ) { return ( 10 ); }
int g( int ) { return ( 20 ); }
voidOnStart()
{
A *a = new A;
Print( !a ); //здесь считает 'a' - числом ???
Print( a.operator!() ); //здесь не считает (что правильно) 'a' - числомPrint( g( a ) ); //здесь не считает (что правильно) 'a' - числом, хотя есть g( int ) и нет g( A* )
}
MQL4の標準ライブラリ、特にインジケータクラスでエラーが発生します。
CiATR クラスでは、GetDataメソッドの本体が欠落しています。
ENUM_APPLIED_VOLUMEタイプのパラメータを使用するインジケータ(CiForce、CiOBV)では、エラーが発生します:不適切な列挙子は使用できません。
ところで、ENUM_APPLIED_VOLUMEは標準の列挙型のようです。MQL4のドキュメントには存在しますが、実際には存在しません('ENUM_APPLIED_VOLUME' - undeclared identifier)。
ですから、ぜひすべての図書館をチェックしてみてください。機能確認もせず、急遽MT5から移植した感があります。
コンパイルエラー、ビルド966
ビルド932は問題なしコメントの内容による
だいじょうぶ
コメントは決して置き換えられることはなく、コンパイラは単に無視します。
いずれにせよ、https://www.mql5.com/ru/forum/1111/page1190#comment_993854 の // を /**/ に置き換えてください。結果は同じで、コンパイルエラーです。
次のような状況を説明してください。マルチカレンシーのインジケーターがあるのですが、その値はどのチャートに接続されているかによって変化しません。私はこのインジケーターにサポートラインとレジスタンスラインを手動で引いています。今度は、別のツールをマーケットの概要からウィンドウにドラッグすると、インジケータの外観はそのままで、線が消えるというトリックです。オブジェクト一覧]ダイアログボックスを開くと、それらのオブジェクトはまだそこに表示されています。エンドポイントの値(日付と値)は同じままです(つまり、同じ場所に表示されるはずです) - それは理解できます、それらは変更されていないのです。ただし、線は見えません。その後、元々あったツールをウィンドウ上にドラッグすると、線が再び表示されるようになります。何が問題なのか?
発見し、修正しました。
ご連絡ありがとうございます。一般的なバグであることが判明-以前は常にそのように動作していた
省略演算子 !() を適用できません -コンパイルエラー
もしコンパイラが、f4( a ) は 'a' がオブジェクトであり、数値としてのポインタ/スクリプタではないことを意味する、と理解している場合)
また、!a' は 'a' (オブジェクト、ポインタ/数値ではない) に対して同じことを意味することを理解する必要があります。
つまり、もし
a1.f() と a2.f() は、a1, a2 がポインタであろうとオブジェクトであろうと、同じことを意味します。例えば、operator+()ではコンパイルエラー は発生しませんし、上記の最初の例に全く使用されていないoperator+()を単純に追加してもエラーは発生しませんので、付け加えておきます。
が、この場合、別の不確実性が発生する