class A {
public:
virtualvoid f() const {}
int x;
};
class B : public A {
public:
virtualvoid f() /*не const*/ { x = 2; }
};
void g( const A* a ) { a.f(); }
voidOnStart()
{
A *a = new B();
a.x = 1;
Print( a.x ); //результат = 1
g( a );
Print( a.x ); //результат = 2, а обещали, что g( const A* ) не может менять объектdelete( a );
}
別の例
class A {
public:
virtualvoid f() const { Print( "1" ); }
};
class B : public A {
public:
virtualvoid f() { Print( "2" ); }
};
void g( const A* a ) { a.f(); }
voidOnStart()
{
A *a = new B();
g( a );
delete( a );
}
私はそれを理解した、私は1ヶ月以上インストールファイルを持っていた、今私は新しいものをダウンロードし、それは動作している、その後、正しいファイルをダウンロードしているので、私はインストールファイルが変更されているとは思いませんでした。
其れどころか旧作では、プレートを表示しなかったのに、なぜ表示するようになったのか......。変だなあ
よくわからないが、新しいものは何の兆候もなくいつも通りの振る舞いで、インストールファイルのダウンロードを開始した。
よくわからないが、新しいものはタブもなくいつも通りの挙動で、インストールファイルのダウンロードを開始した。
インストール作業中にこのようなウィンドウが表示されるのは、コンピュータの保護機能(何らかの定期的なアップデートによるものらしい)とその後の特異な発現が関係している可能性があると遭遇したことがあります。
以前のものでも、ダウンロードしたばかりのインストールファイルでも構わない。
さて、今後のために、念のためメモしておきますが、この新しい依存は私にとっては(今は実験中ではありません)。
でも、悩みが解決してよかったです。
提案ですが、私の記憶では、最近MT5ターミナルのアップデートが あったように思います。この場合、プロキシプロンプト、インストールファイルの古いバージョン、オンラインインストールプロセスの間に何らかの関連があるのかもしれません。2014.04.04 10:14のMT5 新ビルドの変更点一覧より「3.ターミナル:一部の条件でグラフィックオブジェクトがチャートに描画 されない 不具合を修正 しました。" 開発者がSD#966979 で私の要求を満たしたのか、それともこれが別の種類の修正なのか、あるいは次のビルドでの何らかの改善の副作用なのかは分かりませんが、いずれにせよ、私はもう大丈夫です。チェンジリストにはバグと 書かれていますが、SDとの やり取りでは「バグではなく、リソースを節約するための制限 です」とはっきり言われました。"
今まで通り、どのTFでも快適にTAビルドを見ることができるようになりました。
ありがとうございました。応募を締め切らせていただきます。
派生クラスでメソッドの定数 オーバーライドが可能(ビルド917)
別の例
結果=2、ただしC++では結果=1
エラーは、派生クラスでは基底クラスと同じ名前のメソッドを宣言してはいけない(これは許される)という事実ではなく、C++が両者を異なるとみなすのに対し、MQLはB::f()がA::f()をオーバーライドするとみなすという点ですconst
Print()関数は、float信号の非数値を非信号として出力しますが、doubleはその両方を正常に出力するので、非論理的です。
Float は、1) 非信号番号から接頭辞 Q を除去し、信号番号と非信号番号を同じように印字するか、2) 信号番号に接頭辞 S を付けて出力するか、のいずれかでなければならない。もし、間違っていたら、Print()関数で出力される数値以外の信号で、プレフィックスQがない例を教えてください。
例えば、シグナルダブルの非数値を受け取り、floatに変換して、Print()で両方出力する。最初のケースではSNAN、2番目のケースではQNANが表示されます。
テスターからファイルにデータを書き込む方法をつつく過程で、こんなエラーが発生しました(収まりきらないので短縮しています)。
つまり、もちろん、このミスは私の不器用さからくる当然の結果であることは理解しています。そして、いずれにせよ、それはすぐに修正されました(問題は、必要であれば、第3の関数を介してFileWriteに 非文字列データを渡そうとしたことでした - 私はより詳細にそれを記述することができます)。しかし、このエラーはあまり明確ではなく、ちょっと怖い感じです :) また、コンパイラはそれが期待されるものであることをどこにも示唆していません。せめてワープとか追加した方がいいのでは...。
テスターからファイルにデータを書き込む方法をつつく過程で、こんなエラーが発生しました(収まりきらないので短縮しています)。
つまり、もちろん、このミスは私の不器用さからくる当然の結果であることは理解しています。そして、いずれにせよ、それはすぐに修正されました(問題は、必要であれば、第3の関数を介してFileWriteに非文字列データを渡そうとしたことでした- 私はより詳細にそれを記述することができます)。しかし、このエラーはあまり明確ではなく、ちょっと怖い感じです :) また、コンパイラはそれが期待されるものであることをどこにも示唆していません。せめてワープとか追加した方がいいのでは...。
はい、具体的にお書きください。
ビルド、OS、ビットレート、テスターの設定 に興味がある。再生用コードを添付してください。
ありがとうございます。
OK、やってみます。適当にロールバックして再現できたのですが、バグの切り分けができず、別に再現できないんです...。
Build: MetaTester 5 x64 build 910 (07 Mar 2014)https://dl.dropboxusercontent.com/u/61587787/bugreport/build.png
Win7 x64 デスクトップhttps://dl.dropboxusercontent.com/u/61587787/bugreport/system.png
テスターウィンドウからコピーしたもの: https://dl.dropboxusercontent.com/u/61587787/bugreport/log.txt
screenshots from the tester (well, you never know):https://dl.dropboxusercontent.com/u/61587787/bugreport/tester1.pnghttps://dl.dropboxusercontent.com/u/61587787/bugreport/tester2.png
tester settings(I don't know what I mean):https://dl.dropboxusercontent.com/u/61587787/bugreport/config.png
コードスニペット
WriteCSV("test.csv",(string)idx); に置き換えると、エラーは 解消されます。その他の文字列以外の変数は、ここでは何もしません。しかし、idxが何に相当するかは関係ないようです(配列内のニュースの通し番号に過ぎません)。結果を保存しようとすると、どのニュースでも再生される。警告の うち、「数値」から「文字列」への暗黙の変換のみが出力されますが、やはりこの場合のみクラッシュと なります。
私はここに完全なコードとそれへの.setを投稿したくないのですが、どこかに送るかもしれません。