エラー、バグ、質問 - ページ 2272 1...226522662267226822692270227122722273227422752276227722782279...3185 新しいコメント A100 2018.09.03 00:25 #22711 fxsaber:1つは創られるだけです。さらに、fではTが 使えなくなります。 これ自体がエラーとなる。template<typename T> void f() { Print( sizeof( T )); } struct A { int a; }; void OnStart() { f<int>(); //(1)//нормально f<A>(); //(2)//нормально struct B { int b; }; f<B>(); //(3)//Error: 'B' - undeclared identifier } そして、(1)(2)と(3)の根本的な違いは何でしょう? A100 2018.09.03 02:01 #22712 fxsaber:さらに、fではTが使えなくなります。すべてにおいて、状況は一目瞭然です。また、Tをfに使用することを禁止していることに違反します。 template<typename T> void f() { class T; Print(__FUNCSIG__, ":" , sizeof(T)); } template<typename T1, typename T2> void g() { class T1 { T2 x; } a; f<T1>(); } void OnStart() { class A {}; g<A,int >(); g<A,double>(); } ご覧のようにエラーなくコンパイルされますし、結果が不合理であっても、すべてが「説明可能」であれば、それは重要なことではありません。 rinat_a_n 2018.09.03 02:14 #22713 みなさん、こんにちは。助けてください。ゴールドの取引ができない、全て機能しているのに、取引ができない。以下は、そのスクリーンショットです。 ファイル: IMG_20180825_092821.png 144 kb IMG_20180825_092957.png 82 kb Stanislav Dray 2018.09.03 02:56 #22714 このコードの神聖な意味は何なのか、なぜ標準ライブラリ にまったく詰め込まなかったのか。 if(IsStopped(__FUNCTION__)) return(false); 標準ライブラリのポジションや注文を閉じる関数をOnDeaniteで使用することができなくなりました(例:REASON_REMOVE fxsaber 2018.09.03 06:32 #22715 Stanislav Dray:このコードの神聖な意味は何なのか、なぜ標準ライブラリ にまったく詰め込まなかったのか。 OnDynit では、標準ライブラリのポジションや注文を閉じるための関数、例えば REASON_REMOVE を使用することができなくなりました。はい、それはバグです。 fxsaber 2018.09.03 07:16 #22716 A100:さらに、Tをfに使用することを禁止したことに違反しました。ご覧のように、エラーもなくコンパイルされ、結果が不合理であることは重要ではなく、すべてが「説明可能」であることが重要なのです。テンプレートとは何か、よく分かっていないようですね。マクロと似ていますが、ある機能がついています。 以下はそのコードです。 template<typename T> void f() { class T{ MqlTick a; }; Print(__FUNCSIG__, ":" , sizeof(T)); } template<typename T1, typename T2> void g() { class T1 { T2 x; } a; f<T1>(); } void OnStart() { class A {}; g<A,int >(); g<A,double>(); } . void f<A>():68 void f<A>():68 それは、Tがマクロのような設定であり、ある種の注意点があるだけだからです。最終的にあるのは、署名が作られるということです。関数内部では、Tに置き換えられるAについて誰も知らない。しかし、このAを内部で定義しているので、それ以上のコンパイルエラーは 発生しない。このAは他の同名のクラスとは関係ないことを示すために、中にMqlTickを挿入しました。 つまり、MQL5におけるイントラクラスは、親関数の外からは見えないようになっているのです。Tとして渡されるのはクラスとしての型名のみである。この場合、名前は親機能への参照を持ちません。 つまり、すべては極めて論理的に説明可能なのです。バグではなく、そういう限定的な実装なんです。 多分、面接でC++のプログラマーが「これは無理だ」と言うだろう。 template<typename T> void f() { class T{}; } MQL5も十分可能です。 A100 2018.09.03 09:19 #22717 fxsaber:パターンというものをよく理解していないのでしょう。 fxsaberZS おそらく面接でC++のプログラマーが「これは無理だ」と言うでしょう。 もし、あなたがC++でこんなことは不可能だと思うのなら、それは私ではなく、テンプレートとは何か、どのように機能するかを理解していないあなたの方だということです...。杜撰な実装と制約のある実装を見分けるのは至難の業だ fxsaber 2018.09.03 10:18 #22718 A100: C++でそんなことは不可能だと思うのなら、それは私ではなく、テンプレートとは何か、どのように機能するのかを理解していないということです...。凡庸な実装と境界のある実装を見分けることができないように、より一層コメントをつけた文の最初の単語を読んでください。MQL5のテンプレートとマクロについて理解しているので、あなたの例がMQL5でコンパイルできないことは、コンパイルを試さなくても気づきます。C++「どうでしょう、それでは防げませんね。 このコードに対してC++がどのように反応するかを示していただけると幸いです。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム バグ、バグ、質問 fxsaber さん 2018.09.03 07:16 ZS おそらく面接でC++のプログラマーが「これは無理だ」と言うでしょう。 template<typename T> void f() { class T{}; } A100 2018.09.03 10:53 #22719 fxsaber: このコードに対してC++がどのように反応するかを示してくれるとありがたいのですが。 反応はMQLと同じです。なぜ、違うのでしょうか?テンプレートはテンプレート TheXpert 2018.09.03 11:03 #22720 fxsaber:テンプレートというものをよく理解していないのでしょう。そして、マクロと同じようなもので、いくつかのトリックがあるのみです。 はい、このサンプルはプラスでコンパイルされません error: 'struct f()::T' の宣言が影となる template param template<typename T>. が、仮にコンパイルできたとしても、クラス名が「T」になっているだけなので、その結果には驚かされるでしょう。 mqlで異なる場合、これは不正確です。 1...226522662267226822692270227122722273227422752276227722782279...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1つは創られるだけです。さらに、fではTが 使えなくなります。
さらに、fではTが使えなくなります。すべてにおいて、状況は一目瞭然です。
また、Tをfに使用することを禁止していることに違反します。
ご覧のようにエラーなくコンパイルされますし、結果が不合理であっても、すべてが「説明可能」であれば、それは重要なことではありません。
このコードの神聖な意味は何なのか、なぜ標準ライブラリ にまったく詰め込まなかったのか。
標準ライブラリのポジションや注文を閉じる関数をOnDeaniteで使用することができなくなりました(例:REASON_REMOVE
このコードの神聖な意味は何なのか、なぜ標準ライブラリ にまったく詰め込まなかったのか。
OnDynit では、標準ライブラリのポジションや注文を閉じるための関数、例えば REASON_REMOVE を使用することができなくなりました。
はい、それはバグです。
さらに、Tをfに使用することを禁止したことに違反しました。
ご覧のように、エラーもなくコンパイルされ、結果が不合理であることは重要ではなく、すべてが「説明可能」であることが重要なのです。
テンプレートとは何か、よく分かっていないようですね。マクロと似ていますが、ある機能がついています。
以下はそのコードです。
.
それは、Tがマクロのような設定であり、ある種の注意点があるだけだからです。最終的にあるのは、署名が作られるということです。関数内部では、Tに置き換えられるAについて誰も知らない。しかし、このAを内部で定義しているので、それ以上のコンパイルエラーは 発生しない。このAは他の同名のクラスとは関係ないことを示すために、中にMqlTickを挿入しました。
つまり、MQL5におけるイントラクラスは、親関数の外からは見えないようになっているのです。Tとして渡されるのはクラスとしての型名のみである。この場合、名前は親機能への参照を持ちません。
つまり、すべては極めて論理的に説明可能なのです。バグではなく、そういう限定的な実装なんです。
多分、面接でC++のプログラマーが「これは無理だ」と言うだろう。
MQL5も十分可能です。
パターンというものをよく理解していないのでしょう。
ZS おそらく面接でC++のプログラマーが「これは無理だ」と言うでしょう。
もし、あなたがC++でこんなことは不可能だと思うのなら、それは私ではなく、テンプレートとは何か、どのように機能するかを理解していないあなたの方だということです...。杜撰な実装と制約のある実装を見分けるのは至難の業だ
C++でそんなことは不可能だと思うのなら、それは私ではなく、テンプレートとは何か、どのように機能するのかを理解していないということです...。凡庸な実装と境界のある実装を見分けることができないように、より一層
コメントをつけた文の最初の単語を読んでください。MQL5のテンプレートとマクロについて理解しているので、あなたの例がMQL5でコンパイルできないことは、コンパイルを試さなくても気づきます。C++「どうでしょう、それでは防げませんね。
このコードに対してC++がどのように反応するかを示していただけると幸いです。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
バグ、バグ、質問
fxsaber さん 2018.09.03 07:16
ZS おそらく面接でC++のプログラマーが「これは無理だ」と言うでしょう。
このコードに対してC++がどのように反応するかを示してくれるとありがたいのですが。
テンプレートというものをよく理解していないのでしょう。そして、マクロと同じようなもので、いくつかのトリックがあるのみです。
はい、このサンプルはプラスでコンパイルされません
が、仮にコンパイルできたとしても、クラス名が「T」になっているだけなので、その結果には驚かされるでしょう。