エラー、バグ、質問 - ページ 1696 1...168916901691169216931694169516961697169816991700170117021703...3185 新しいコメント Vladimir Pastushak 2016.09.22 21:13 #16951 Stanislav Korotky:まず、メソッドをvirtualとして宣言しようとしたのか、そうでないのかが不明です。もしvirtualでなければならないのであれば、派生クラスではなくベースクラスにvirtualと書いてください(そうしないと、派生クラスのインスタンスを入れてもベースメソッドへのポインタがリッピングされてしまうからです)。派生クラスでメソッドをオーバーライドしたくない場合は、一切言及せず、オーバーライドする場合は、ボディを付けてオーバーライドする必要があります。最後に、派生クラスからメソッドを隠すには、中間クラスを導入し、そこでメソッドをプライベートに移動させるか、ベースクラスでプライベート化する必要があります(でも、それならなぜバーチャルなのか?)以下はその一例です。 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class roditel { public: virtual int one(void) { return 1; } virtual int two(void) { return 2; } virtual int three(void) { return 3; } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class naslednic_1 : public roditel { public: virtual int two(void); virtual int three(void); }; naslednic_1 go; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { go.two(); // 'two' - function must have a body TEst.mq4 42 7 } //+------------------------------------------------------------------+ Stanislav Korotky 2016.09.22 21:40 #16952 Vladimir Pastushak:以下はその一例です。 この例は、最初の例とほぼ同じです ;-)。私の手紙を開いたのに、読んでいないのですか?メソッドを定義せず、子孫で新たに宣言することで、何を実現したいのでしょうか?新しいものを持たずに基本的な実装を呼び出すには、子孫でそれらに言及する必要はありません。 Vladimir Pastushak 2016.09.22 21:56 #16953 Stanislav Korotky: この例は、最初の例とほぼ同じです ;-)。私の手紙は開封されましたが、読まれなかったのですか?メソッドを定義せず、子孫で再宣言することで何を実現したいのでしょうか?新しい実装を持たずに基本的な実装を呼び出すには、子孫で宣言する必要はない。私は、10個の継承されたメソッドと 子孫クラスで作成されたメソッドのみを表示したいのです。 私は、現在のクラスと何ら関係のない190個のメソッドは必要ありません。例えば、幅、高さ、角、半径、色、面積など、形状の最大限のプロパティを記述したベースクラスがあります。これらのプロパティメソッドを元に、親クラスのメソッド、半径、色、面積...を使用する円の派生クラスを作成します。でも、ここでは角や幅は必要ないんです.これらのメソッドに基づいて、親クラスのメソッド、色、面積、角...を使用する子孫の三角形クラスを作成します。でも、ここに半径は必要ない・・・。なぜかというと、親クラスにはcolor, styleメソッドのように、すべてに共通するメソッドや図形群に共通するメソッド群があるのです。 Stanislav Korotky 2016.09.22 22:47 #16954 Vladimir Pastushak:私は、10個の継承されたメソッドと 子孫クラスで作成されたメソッドのみを表示したいのです。 私は、現在のクラスと何ら関係のない190個のメソッドは必要ありません。例えば、幅、高さ、角、半径、色、面積など、形状の最大限のプロパティを記述したベースクラスがあります。これらのプロパティメソッドを元に、親クラスのメソッド、radius、color、area...を使用する子孫クラスを作成する。でも、ここでは角や幅は必要ないんです.これらのメソッドに基づいて、親クラスのメソッド、色、面積、角...を使用する子孫の三角形クラスを作成します。でも、ここに半径は必要ない・・・。理由を聞いてみると、親クラスは、例えばメソッドカラーやスタイルなど、すべてに共通するメソッド群や、図形群に共通するメソッド群を持っているのです。私は理解できません:この質問 - 質問または下書きされた答え?通常はそうして、ベースクラスでは共通、子孫では特殊を追加していくのです。なぜ、その逆をするのか?目的は何ですか?しかし、これ以上深入りしないにしても、私はすでに、不要なプロパティやメソッドをすべてプライベート部分に移動させた中間的な子孫を挿入するという選択肢を提案しているのです。 Aleksey Vyazmikin 2016.09.22 23:11 #16955 事務局への質問ですが、サービスの新しい最新統計はいつ見ることができるのでしょうか? Alexey Navoykov 2016.09.23 03:09 #16956 Vladimir Pastushak:親クラスには200のメソッドがあり、私は10個の継承されたメソッドと 子クラスで作成されたメソッドだけを表示したいのですが、現在のクラスと関係のない190個のメソッドは必要ありません。そのためには、protectedまたはprivateとして継承を宣言し、必要なメソッドをオーバーライドする必要があります。class naslednic_1 : protected roditel { public: virtual int two(void) { return roditel::two(); } virtual int three(void) { return roditel::three(); } }; Vladimir Pastushak 2016.09.23 05:12 #16957 Alexey Navoykov:そのためには、protectedまたはprivateとして継承を宣言し、必要なメソッドをオーバーライドする必要があります。スタニスラフ・コロツキーよくわからないのですが、この質問は質問なのでしょうか、それとも不完全な答えなのでしょうか?通常は、ベースとなるクラスで一般的なものを作り、その子孫で特殊なものを追加していく、というやり方です。なぜ、その逆をやるのか?目的は何ですか?しかし、あまり深く考えずとも、中間の子孫を挿入して、不要なプロパティやメソッドをすべてプライベートな部分に移動させるという選択肢も既に提案した。ありがとうございます。Alexey、あなたの例はうまくいきません、いずれにせよ、子は親のメソッドを取得します、それはダンプされるべきではないでしょう。 fxsaber 2016.09.23 08:20 #16958 自分のINDICATOR_SHORTNAMEを 知るにはどうしたらよいですか?IndicatorGet*-functionsがない! fxsaber 2016.09.23 08:22 #16959 Alexey Kozitsyn: 作成時にショートネームを変更した場合はどうなりますか?そして、毎回変える?インジケーターにインジケーターバッファが 含まれていれば自己識別は容易ですが、バッファがない場合はまだ解決策が見えてきません。 Vladimir Karputov 2016.09.23 08:31 #16960 fxsaber: 自分のINDICATOR_SHORTNAMEを 知るにはどうしたらよいですか?IndicatorGet*関数が存在しない! Print(MQLInfoString(MQL_PROGRAM_NAME));インジケーターのショートネームを 返します。短縮名を指定しない場合、フルネームが返される。 1...168916901691169216931694169516961697169816991700170117021703...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まず、メソッドをvirtualとして宣言しようとしたのか、そうでないのかが不明です。もしvirtualでなければならないのであれば、派生クラスではなくベースクラスにvirtualと書いてください(そうしないと、派生クラスのインスタンスを入れてもベースメソッドへのポインタがリッピングされてしまうからです)。
派生クラスでメソッドをオーバーライドしたくない場合は、一切言及せず、オーバーライドする場合は、ボディを付けてオーバーライドする必要があります。
最後に、派生クラスからメソッドを隠すには、中間クラスを導入し、そこでメソッドをプライベートに移動させるか、ベースクラスでプライベート化する必要があります(でも、それならなぜバーチャルなのか?)
以下はその一例です。
以下はその一例です。
この例は、最初の例とほぼ同じです ;-)。私の手紙は開封されましたが、読まれなかったのですか?メソッドを定義せず、子孫で再宣言することで何を実現したいのでしょうか?新しい実装を持たずに基本的な実装を呼び出すには、子孫で宣言する必要はない。
私は、10個の継承されたメソッドと 子孫クラスで作成されたメソッドのみを表示したいのです。 私は、現在のクラスと何ら関係のない190個のメソッドは必要ありません。
例えば、幅、高さ、角、半径、色、面積など、形状の最大限のプロパティを記述したベースクラスがあります。
これらのプロパティメソッドを元に、親クラスのメソッド、半径、色、面積...を使用する円の派生クラスを作成します。でも、ここでは角や幅は必要ないんです.
これらのメソッドに基づいて、親クラスのメソッド、色、面積、角...を使用する子孫の三角形クラスを作成します。でも、ここに半径は必要ない・・・。
なぜかというと、親クラスにはcolor, styleメソッドのように、すべてに共通するメソッドや図形群に共通するメソッド群があるのです。
私は、10個の継承されたメソッドと 子孫クラスで作成されたメソッドのみを表示したいのです。 私は、現在のクラスと何ら関係のない190個のメソッドは必要ありません。
例えば、幅、高さ、角、半径、色、面積など、形状の最大限のプロパティを記述したベースクラスがあります。
これらのプロパティメソッドを元に、親クラスのメソッド、radius、color、area...を使用する子孫クラスを作成する。でも、ここでは角や幅は必要ないんです.
これらのメソッドに基づいて、親クラスのメソッド、色、面積、角...を使用する子孫の三角形クラスを作成します。でも、ここに半径は必要ない・・・。
理由を聞いてみると、親クラスは、例えばメソッドカラーやスタイルなど、すべてに共通するメソッド群や、図形群に共通するメソッド群を持っているのです。
私は理解できません:この質問 - 質問または下書きされた答え?通常はそうして、ベースクラスでは共通、子孫では特殊を追加していくのです。なぜ、その逆をするのか?目的は何ですか?
しかし、これ以上深入りしないにしても、私はすでに、不要なプロパティやメソッドをすべてプライベート部分に移動させた中間的な子孫を挿入するという選択肢を提案しているのです。
親クラスには200のメソッドがあり、私は10個の継承されたメソッドと 子クラスで作成されたメソッドだけを表示したいのですが、現在のクラスと関係のない190個のメソッドは必要ありません。
そのためには、protectedまたはprivateとして継承を宣言し、必要なメソッドをオーバーライドする必要があります。
そのためには、protectedまたはprivateとして継承を宣言し、必要なメソッドをオーバーライドする必要があります。
よくわからないのですが、この質問は質問なのでしょうか、それとも不完全な答えなのでしょうか?通常は、ベースとなるクラスで一般的なものを作り、その子孫で特殊なものを追加していく、というやり方です。なぜ、その逆をやるのか?目的は何ですか?
しかし、あまり深く考えずとも、中間の子孫を挿入して、不要なプロパティやメソッドをすべてプライベートな部分に移動させるという選択肢も既に提案した。
ありがとうございます。
Alexey、あなたの例はうまくいきません、いずれにせよ、子は親のメソッドを取得します、それはダンプされるべきではないでしょう。
作成時にショートネームを変更した場合はどうなりますか?
そして、毎回変える?
インジケーターにインジケーターバッファが 含まれていれば自己識別は容易ですが、バッファがない場合はまだ解決策が見えてきません。
自分のINDICATOR_SHORTNAMEを 知るにはどうしたらよいですか?IndicatorGet*関数が存在しない!