MQL5におけるOOPに関する質問 - ページ 57

 
Dmitry Fedoseev:

C2からxへのアクセスはどこですか?
繰り返しになりますが、ネストしたクラスは、クラスの可視性だけでオブジェクトを 作成することができます。C2クラスのオブジェクトは、C1クラスの内部でのみ作成することができます。以上です。型を書くのと違うのはその点だけです。
しかし、確かに他のものをネストされたクラスと呼ぶのでしょうか?教えてください。

という内容です。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

ウラジミール・シマコフ, 2020.05.16 21:11

class Originator
  {
   int               state;
public:
   class Memento;
   Originator() : state(0){}
   Memento*          getMemento()      {return new Memento(&this);}
   void              setState(int s)   {state=s;}
   void              dumpState()       {printf("State: %i", state);}
///////////////////////////////////////////////////////////
   class Memento{
      int            state;
      Originator*    org;
      public:
                     Memento(Originator* mOrg):state(mOrg.state),org(mOrg){}
      void           restoreState() {org.state=state;}
   };
///////////////////////////////////////////////////////////
  };

cannot access to private member "というエラーが発生しないのはなぜですか?
回答:MementoはOriginatorに相対するNested/Internalクラス であるため です。

 
Sergey Dzyublik:

という話をしています。

他のクラスのフィールドへのアクセスはどこにあるのか?

 
Dmitry Fedoseev:

他のクラスのフィールドへのアクセスはどこにあるのか?

冗談でしょう、投稿者がギフト用に黄色で強調したのですよ...。

 
Sergey Dzyublik:

冗談でしょう、投稿者は特にギフト用に黄色で強調したのですが...。

なるほど、ただ昨日はあんな感じではなかったと思います。https://www.mql5.com/ru/forum/85652/page48#comment_16405154 でも、この人はあなたの部活の人ですよね...。ということで、大丈夫なんですよね?

記念にスクリーンショットも撮りますよ。

123

 
Dmitry Fedoseev:

なるほど、ただ昨日はあんな感じではなかったと思います。https://www.mql5.com/ru/forum/85652/page48#comment_16405154 でも、この人はあなたの部活の人ですよね...。ということで、大丈夫なんですよね?

記念にスクリーンショットも撮りますよ。

精神的に大丈夫ですか?
配分で特定の投稿に誘導される、頭が悪い、でもそれすら受け入れられず、全く別のスレッドの無名の投稿を参照して、なんとか自分を正当化したいだけ...。
がんばってください・・・。

 
Sergey Dzyublik:

精神的に大丈夫ですか?
具体的な投稿に配分を指示されているのに、それすら受け入れられず、全く別の話題の無名の投稿を参照して、何とか自分を正当化したいだけなんだろうな...と、呆れてしまいますね。
がんばってください・・・。

同じスレッドの、この議論の発端となった投稿を指しているのです。この書き込みがどのスレッドからなのかわからないのか?そこで疑問が湧くのですが、もしかしたらあなたの精神に何か問題があるのでは?

しかも、呆気なくではなく、驚きのあまり困惑してしまう。しかし、どこでこの記事を手に入れたのでしょうか......興味深いですね。

そして、その記事の著者は、それが可能であることを昨日知ったばかりであることに留意してください。彼はそれを知っていながら気づかなかったから、後でこのスレッドに意味のない例を書き込んだのです。専門家はどこを見ていたのか?

 
Igorがru.wikipedia.org/wiki/keeper_(template_projecting)にあげたwikipediaのリンクからコードを見るのも同様に興味深いです。最初の例は、Javaの場合です。そこになぜ管理人クラスのガスケットが必要なのか?気の利いたことを言うだけ?要するに、追加の構造と2つのメソッドを使うことに尽きる。「偉大なる聖なるデザイン パターン」なんて聞いたこともないどんなバカでもやることだが、不必要なガスケットはなく、自分が「偉大なる知識」に属していることにさえ気づかないのだ。
 
昔、面接で「モノとは何か」と聞かれたことがある。メソッドとセットで答え、すぐに採用されました。すると、他の候補者が、猫やその足、犬など、子ども向けのプログラミング本に書かれているようなことを話し始めたと聞いています
 
Evgeniy Zhdan:
昔、面接で「モノとは何か」と聞かれた。と答えたら、すぐに採用されました。すると、他の候補者が、猫やその足、犬など、プログラミングの絵本に書かれているようなことを話し始めたと聞いています

なぜ、あなたの話が参考になるのですか? 誰でもこの方法で仕事を得ることができます。正しい時に正しい場所にいればいい、ただそれだけです...。ボタン係に欠員が出たので、採用されたのですね )))

それともその時、何か外国の証明書を持っていたのでしょうか?)


ZS: なぜ働くのか?コストは大きいのか?- あなたは、EA10〜30万ルーブルの平均的なチェックを持って、私の意見では、少なくとも月に十分なはずです)))))。


UPD: 見世物小屋の不本意な参加者という感じがして、違和感がある(((

 

説明しよう。

mql5ではplusと同様にネストしたクラスは外部のクラスとフレンドになります(ちなみにここが知らなかった点です)。 しかしmql4ではそれが実装されておらず、そこに松葉杖を書かなければなりません。つまり、このコードはmql5では正しくコンパイルされますが、mql4ではコンパイルエラーに なります。

class Originator
  {
   int               state;
public:
   class Memento;
   Originator() : state(0){}
   Memento*          getMemento()      {return new Memento(&this);}
   void              setState(int s)   {state=s;}
   void              dumpState()       {printf("State: %i", state);}
///////////////////////////////////////////////////////////
   class Memento{
      int            state;
      Originator*    org;
      public:
                     Memento(Originator* mOrg):state(mOrg.state),org(mOrg){}
      void           restoreState() {org.state=state;}
   };
///////////////////////////////////////////////////////////
  };

もちろん、「C++ではない」と書かれるでしょうが、それでも私は類推します。

mqlの公式ドキュメントには、ネストされたクラスについて、また、そこから外部フィールドにアクセスする際の特殊性についての記述はなかったと記憶しています。 その結果、私はUBを思い浮かべることになる。しかし、関連する情報がドキュメントに掲載されるまでの間、そのための土台作りをすることは、ある意味自己責任です。