MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1096 1...108910901091109210931094109510961097109810991100110111021103...1953 新しいコメント Seric29 2020.03.20 01:22 #10951 クラスメソッドへの ポインタを作成するにはどうすればよいですか? class qer{ public: int _int(int q){...} int int_(int q){...} };qer *_qer intとint_の 関数へのポインタを作成する必要があります。 mql4ではポインタとクラスについてここ(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer) で何かが記述されていますが、コメントがなく、何のためのもので、何をするものなのかがよくわかりません。クラスがなければtypedefを使ってポインタを宣言するのは簡単ですが、クラスでどのように動作するのか理解したいです。 クラス関数にtypedefを適用しようとすると、pointer to this function type is not supported yetというエラーが出ます。上の手順を試してみましたが、何のために表示されているのか、コメントがないので、何も動きません。 Vladimir Simakov 2020.03.20 05:29 #10952 Seric29: クラスメソッドへの ポインタを作成するにはどうすればよいですか? intとint_の 関数へのポインタを作成する必要があります。 mql4ではポインタとクラスについてここ(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer) で何かが記述されていますが、コメントがなく、何のためにあり、何をするのかがよくわかりません。クラスがなければtypedefを使ってポインタを宣言するのは簡単ですが、クラスでどのように動作するのか理解したいです。 クラス関数にtypedefを適用しようとすると、この関数型へのエラーポインタがまだサポートされていません。上記の手順を試してみましたが、何のためのものかが示されず、コメントもないため、何も動作しません。 できない Igor Makanu 2020.03.20 06:36 #10953 Vladimir Simakov: できない https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast Vladimir Simakov 2020.03.20 06:57 #10954 Igor Makanu: https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast 間違っている。人が必要とするのは、クラスのメソッドへのポインタであって、子孫変換ではない。 Igor Makanu 2020.03.20 07:32 #10955 Vladimir Simakov: 間違っている。ある人が必要とするのはクラスのメソッドへのポインタであって、継承者へのキャストではありません。 アクセス制御のない手続き型か、アクセス・型制御のあるOOP型か、どちらかです。 OK、気にしないで、著者はいつも高度に専門的な問題を持っています;) Koldun Zloy 2020.03.20 07:34 #10956 Seric29: クラスメソッドへの ポインタを作成するにはどうすればよいですか? intとint_の 関数へのポインタを作成する必要があります。 mql4ではポインタとクラスについてここ(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer) に何か書かれていますが、コメントがなく、何のためにあり、何をするものなのかがよくわかりません。クラスがなければtypedefを使ってポインタを宣言するのは簡単ですが、クラスでどのように動作するのか理解したいです。 クラス関数にtypedefを適用しようとすると、pointer to this function type is not supported yetというエラーが出ます。上の手順を試してみましたが、何のために表示されているのか、コメントがないので、何も動きません。 ちょっと気になったのですが、どのように使う予定ですか? Seric29 2020.03.20 14:17 #10957 なぜクラス全体へのポインタを保存する必要があるのか、以下はその例です。https://docs.mql4.com/ru/basis/types/this //+------------------------------------------------------------------+ //| возвращает собственный указатель | //+------------------------------------------------------------------+ CDemoClass *CDemoClass::getDemoClass(void) { return(GetPointer(this)); } その後、どうするか? Seric29 2020.03.20 14:37 #10958 Vladimir Simakov: できない それができないなら、なぜ関数を取るクラスで関数を書くのか、という疑問が湧いてくる。それに、インターフェイスを実装する必要がある場合もあるし、どの関数を呼び出せばいいのかわからない場合もある。 Vladimir Simakov 2020.03.20 18:53 #10959 Seric29: それができないなら、なぜ関数を取るクラスで関数を 書くのか、という疑問が湧いてくる。それに、インターフェイスを実装する必要がある場合もあるし、どの関数を呼び出せばいいのかわからない場合もある。 どのような仕組みになっているのですか? Seric29 2020.03.20 19:56 #10960 Vladimir Simakov: どのように機能するのですか? パラメータとして、関数へのポインタが渡される。クラスでこれを実現する方法は、誰も考えていないようですね。また、クラスへのポインタを返すべき理由も、まだよく分かっていません。 面白いサンプルがありますが、私の質問とは関係ありません。 #property strict class CStrategy; typedef bool (*SignalFn)(CStrategy*); // Global function definitions bool IsBuySignal(CStrategy*ptr) { return ptr.IsBuySignal(); } bool IsSellSignal(CStrategy*ptr) { return ptr.IsSellSignal(); } // Create an abstract base class class CStrategy { public: virtual bool IsBuySignal(void)=0; virtual bool IsSellSignal(void)=0; }; // Derived class class Strat1 : public CStrategy { public: // Implement the required functions bool IsBuySignal(void) { return true;} bool IsSellSignal(void) { return true;} }; void OnStart() { // instantiate a class Strat1 strat1; // Global functions work as expected SignalFn ptrSignalFn; // pointer to a signal function ptrSignalFn = IsBuySignal; if ( ptrSignalFn(&strat1) ) { Print("Is Buy"); } } また、ガイドで似たようなものを見たことがありますが、手が痛いし、仕事もあるので、これらのサイトはすでに閉じています。 1...108910901091109210931094109510961097109810991100110111021103...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
クラスメソッドへの ポインタを作成するにはどうすればよいですか?
intとint_の 関数へのポインタを作成する必要があります。
mql4ではポインタとクラスについてここ(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer) で何かが記述されていますが、コメントがなく、何のためのもので、何をするものなのかがよくわかりません。クラスがなければtypedefを使ってポインタを宣言するのは簡単ですが、クラスでどのように動作するのか理解したいです。クラスメソッドへの ポインタを作成するにはどうすればよいですか?
intとint_の 関数へのポインタを作成する必要があります。
mql4ではポインタとクラスについてここ(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer) で何かが記述されていますが、コメントがなく、何のためにあり、何をするのかがよくわかりません。クラスがなければtypedefを使ってポインタを宣言するのは簡単ですが、クラスでどのように動作するのか理解したいです。できない
https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast
https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast
間違っている。ある人が必要とするのはクラスのメソッドへのポインタであって、継承者へのキャストではありません。
アクセス制御のない手続き型か、アクセス・型制御のあるOOP型か、どちらかです。
OK、気にしないで、著者はいつも高度に専門的な問題を持っています;)
クラスメソッドへの ポインタを作成するにはどうすればよいですか?
intとint_の 関数へのポインタを作成する必要があります。
mql4ではポインタとクラスについてここ(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer) に何か書かれていますが、コメントがなく、何のためにあり、何をするものなのかがよくわかりません。クラスがなければtypedefを使ってポインタを宣言するのは簡単ですが、クラスでどのように動作するのか理解したいです。ちょっと気になったのですが、どのように使う予定ですか?
なぜクラス全体へのポインタを保存する必要があるのか、以下はその例です。https://docs.mql4.com/ru/basis/types/this
その後、どうするか?
できない
それができないなら、なぜ関数を取るクラスで関数を書くのか、という疑問が湧いてくる。それに、インターフェイスを実装する必要がある場合もあるし、どの関数を呼び出せばいいのかわからない場合もある。
それができないなら、なぜ関数を取るクラスで関数を 書くのか、という疑問が湧いてくる。それに、インターフェイスを実装する必要がある場合もあるし、どの関数を呼び出せばいいのかわからない場合もある。
どのような仕組みになっているのですか?
どのように機能するのですか?
パラメータとして、関数へのポインタが渡される。クラスでこれを実現する方法は、誰も考えていないようですね。また、クラスへのポインタを返すべき理由も、まだよく分かっていません。
面白いサンプルがありますが、私の質問とは関係ありません。
また、ガイドで似たようなものを見たことがありますが、手が痛いし、仕事もあるので、これらのサイトはすでに閉じています。