OOPの専門家に質問です。 - ページ 36

 
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へのアクセスを与え、必要なオブジェクトへのポインタを取得し、ポインタによってそれを操作してください。

複雑なんですけどね。考えてみる...
 
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();
   
}
 
Dmitry Fedoseev:

これは、CB aとCB bの変数でオブジェクトの位置がわかっている場合です。newで作成した場合は、ポインターを保存し、保存した場所から取得する必要があります。

 
Artyom Trishkin:

オブジェクトがどこにあるかは、CB aとCB bの変数でわかるんだ。しかし、newで作成した場合は、ポインターを保存し、保存した場所から取得する必要があります。

オブジェクトが生成され、ポインタが判明したら、それを別のオブジェクトに渡します。

 
Dmitry Fedoseev:

オブジェクトが生成されると同時に、それを別のオブジェクトに渡すためのポインタが知られるようになります。

しかし、作成時(ユーザーがボタンをクリックした - 新しいオブジェクトが作成された)ではなく、プログラムでのさらなる作業の過程でポインタを取得 したい場合。

全オブジェクトへのポインタのリストがあった方が便利なような気がします。この場合、新しく作成されたオブジェクトへのポインタを、他のクラスのすべてのオブジェクトにプッシュする必要はない。また、新しいオブジェクトの新しいクラスを作るときにも、この新しいクラスへのオブジェクトポインタの受け渡しを書き換える必要はないでしょう。また、新しいクラスで以前に作成したオブジェクトへのポインタを取得する必要がある場合、その識別子によって正しいオブジェクトを取得する方法を書き留めればよいのです。

しかし、みんなそれなりに狂っている。私はそうです :)

 
うーん、シャープやMQLではポインタはディスクリプタだしなぁ。それに、.NETのコードはとっくの昔に正式にオープンになっているんです。デリゲートをMQLに移植しようとした人はまだいないのですか?
 
Alexey Volchanskiy:
うーん、シャープやMQLではポインタはディスクリプタだしなぁ。それに、.NETのコードはとっくの昔に正式にオープンになっているんです。デリゲートをMQLに移植しようとした人はまだいないのですか?
15.10 思い出してください、考えておきます、たぶんうまくいくと思います。
 
Vladimir Simakov:
15.10 思い出してください、考えてみます、きっとうまくいくでしょう。

15.10とは何ですか?

 
Alexey Volchanskiy:

15.10とは何ですか?

10月15日くらい?

 
Artyom Trishkin:

10月15日くらい?

その通りなのですが、一応、休日です。
理由: