OOPの専門家に質問です。 - ページ 36 1...293031323334353637383940414243...55 新しいコメント Реter Konow 2019.10.05 17:53 #351 Artyom Trishkin: 例では クラスYは、クラスFとクラスZの型を持つ変数を含む。 しかし、すでにFクラスと Zクラスのオブジェクトが どこかで作成され使用されている場合、オブジェクトYでそれらにアクセスすることはできません。オブジェクトYの中にクラスFとZの2つの新しいオブジェクトが存在することになります。 すでに作成され使用されているクラスFとZのオブジェクトにアクセスするには、クラスYでオブジェクトFとZへの参照を取得する必要があります。そうすればクラスYは、新しく原始的なFとZを使うのではなく、すでにFとZに格納されているそれらのデータで操作できるようになるのです。 しかし、すぐにそのようなオブジェクトリンクを作ると、その中のFとZはクラスFとZへのアクセスを与え、その充填はクラスYを通してのみ行われるべきです - 再び、そこからオブジェクトFとZへのアクセスを与え、必要なオブジェクトへのポインタを取得し、ポインタによってそれを操作してください。 複雑なんですけどね。考えてみる... Dmitry Fedoseev 2019.10.05 18:01 #352 Artyom Trishkin: あるいは、他のクラスのデータが欲しいクラスでは、目的のクラスへのポインタを取得するメソッドを作っておくとよい。 class CA{ protected: public: void f(){ Print("A"); } }; class CB{ protected: CA * a; public: void f(CA * arg){ a=arg; } void f(){ Print("B"); } void f2(){ a.f(); } }; CA a; CB b; void OnStart(){ b.f(GetPointer(a)); b.f(); b.f2(); } Artyom Trishkin 2019.10.05 18:14 #353 Dmitry Fedoseev: これは、CB aとCB bの変数でオブジェクトの位置がわかっている場合です。newで作成した場合は、ポインターを保存し、保存した場所から取得する必要があります。 Dmitry Fedoseev 2019.10.05 18:21 #354 Artyom Trishkin: オブジェクトがどこにあるかは、CB aとCB bの変数でわかるんだ。しかし、newで作成した場合は、ポインターを保存し、保存した場所から取得する必要があります。 オブジェクトが生成され、ポインタが判明したら、それを別のオブジェクトに渡します。 Artyom Trishkin 2019.10.05 18:45 #355 Dmitry Fedoseev:オブジェクトが生成されると同時に、それを別のオブジェクトに渡すためのポインタが知られるようになります。 しかし、作成時(ユーザーがボタンをクリックした - 新しいオブジェクトが作成された)ではなく、プログラムでのさらなる作業の過程でポインタを取得 したい場合。 全オブジェクトへのポインタのリストがあった方が便利なような気がします。この場合、新しく作成されたオブジェクトへのポインタを、他のクラスのすべてのオブジェクトにプッシュする必要はない。また、新しいオブジェクトの新しいクラスを作るときにも、この新しいクラスへのオブジェクトポインタの受け渡しを書き換える必要はないでしょう。また、新しいクラスで以前に作成したオブジェクトへのポインタを取得する必要がある場合、その識別子によって正しいオブジェクトを取得する方法を書き留めればよいのです。 しかし、みんなそれなりに狂っている。私はそうです :) Alexey Volchanskiy 2019.10.05 22:55 #356 うーん、シャープやMQLではポインタはディスクリプタだしなぁ。それに、.NETのコードはとっくの昔に正式にオープンになっているんです。デリゲートをMQLに移植しようとした人はまだいないのですか? Vladimir Simakov 2019.10.05 23:13 #357 Alexey Volchanskiy: うーん、シャープやMQLではポインタはディスクリプタだしなぁ。それに、.NETのコードはとっくの昔に正式にオープンになっているんです。デリゲートをMQLに移植しようとした人はまだいないのですか? 15.10 思い出してください、考えておきます、たぶんうまくいくと思います。 Alexey Volchanskiy 2019.10.05 23:45 #358 Vladimir Simakov: 15.10 思い出してください、考えてみます、きっとうまくいくでしょう。 15.10とは何ですか? Artyom Trishkin 2019.10.05 23:58 #359 Alexey Volchanskiy: 15.10とは何ですか? 10月15日くらい? Vladimir Simakov 2019.10.06 00:23 #360 Artyom Trishkin: 10月15日くらい? その通りなのですが、一応、休日です。 1...293031323334353637383940414243...55 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
例では
クラスYは、クラスFとクラスZの型を持つ変数を含む。
しかし、すでにFクラスと Zクラスのオブジェクトが どこかで作成され使用されている場合、オブジェクトYでそれらにアクセスすることはできません。オブジェクトYの中にクラスFとZの2つの新しいオブジェクトが存在することになります。
すでに作成され使用されているクラスFとZのオブジェクトにアクセスするには、クラスYでオブジェクトFとZへの参照を取得する必要があります。そうすればクラスYは、新しく原始的なFとZを使うのではなく、すでにFとZに格納されているそれらのデータで操作できるようになるのです。
しかし、すぐにそのようなオブジェクトリンクを作ると、その中のFとZはクラスFとZへのアクセスを与え、その充填はクラスYを通してのみ行われるべきです - 再び、そこからオブジェクトFとZへのアクセスを与え、必要なオブジェクトへのポインタを取得し、ポインタによってそれを操作してください。
あるいは、他のクラスのデータが欲しいクラスでは、目的のクラスへのポインタを取得するメソッドを作っておくとよい。
これは、CB aとCB bの変数でオブジェクトの位置がわかっている場合です。newで作成した場合は、ポインターを保存し、保存した場所から取得する必要があります。
オブジェクトがどこにあるかは、CB aとCB bの変数でわかるんだ。しかし、newで作成した場合は、ポインターを保存し、保存した場所から取得する必要があります。
オブジェクトが生成され、ポインタが判明したら、それを別のオブジェクトに渡します。
オブジェクトが生成されると同時に、それを別のオブジェクトに渡すためのポインタが知られるようになります。
しかし、作成時(ユーザーがボタンをクリックした - 新しいオブジェクトが作成された)ではなく、プログラムでのさらなる作業の過程でポインタを取得 したい場合。
全オブジェクトへのポインタのリストがあった方が便利なような気がします。この場合、新しく作成されたオブジェクトへのポインタを、他のクラスのすべてのオブジェクトにプッシュする必要はない。また、新しいオブジェクトの新しいクラスを作るときにも、この新しいクラスへのオブジェクトポインタの受け渡しを書き換える必要はないでしょう。また、新しいクラスで以前に作成したオブジェクトへのポインタを取得する必要がある場合、その識別子によって正しいオブジェクトを取得する方法を書き留めればよいのです。
しかし、みんなそれなりに狂っている。私はそうです :)
うーん、シャープやMQLではポインタはディスクリプタだしなぁ。それに、.NETのコードはとっくの昔に正式にオープンになっているんです。デリゲートをMQLに移植しようとした人はまだいないのですか?
15.10 思い出してください、考えてみます、きっとうまくいくでしょう。
15.10とは何ですか?
15.10とは何ですか?
10月15日くらい?
10月15日くらい?