MQL5'te OOP hakkında sorular - sayfa 57

 
Dmitry Fedoseev :

C2'den x'e erişim nerede?
Tekrar ediyorum, iç içe sınıf, nesne oluşturma için yalnızca bir sınıf görünürlüğü meselesidir. C2 sınıfı bir nesne yalnızca C1 sınıfı içinde oluşturulabilir. Ve bu kadar. Kayıt türünden tek fark budur:
Ama tabii ki, başka bir şeye iç içe sınıf mı diyorsunuz? Ne söyle.

Aşağıdakilerle ilgilidir:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Vladimir Simakov , 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;}
   };
///////////////////////////////////////////////////////////
  };

Neden hata yok: özel üyeye erişilemiyor?
CEVAP: Çünkü Memento   Oluşturan ile ilgili olarak iç içe (İç içe /Dahili) sınıf

 
Sergey Dzyublik :

Aşağıdakilerle ilgilidir:

Ve başka bir sınıfın alanlarına erişim nerede?

 
Dmitry Fedoseev :

Ve başka bir sınıfın alanlarına erişim nerede?

Şaka yapıyorsun, yazının yazarı özellikle üstün zekalılar için sarı renkle vurguladı...

 
Sergey Dzyublik :

Şaka yapıyorsun, yazının yazarı özellikle üstün zekalılar için sarı renkle vurguladı...

Anlıyorum. Sanki dünkü gibi değildi. https://www.mql5.com/en/forum/85652/page48#comment_16405154 Ama kulübünüzden bu arkadaş... bu yüzden her şey yolunda, değil mi?

Hatta bir ekran görüntüsü bile alayım:

123

 
Dmitry Fedoseev :

Anlıyorum. Sanki dünkü gibi değildi. https://www.mql5.com/en/forum/85652/page48#comment_16405154 Ama kulübünüzden bu arkadaş... bu yüzden her şey yolunda, değil mi?

Hatta bir ekran görüntüsü bile alayım:

zihinsel olarak iyi misin?
Vurgulanan belirli bir gönderiye yönlendiriliyorsunuz, aptalsınız, ancak bunu bile kabul edemiyor ve tamamen farklı bir konudan anlaşılmaz bir gönderiye atıfta bulunamıyorsunuz, sadece bir şekilde kendinizi haklı çıkarmak için ...
İyi şanlar...

 
Sergey Dzyublik :

zihinsel olarak iyi misin?
Vurgulanan belirli bir gönderiye yönlendiriliyorsunuz, aptalsınız, ancak bunu bile kabul edemiyor ve tamamen farklı bir konudan anlaşılmaz bir gönderiye atıfta bulunamıyorsunuz, sadece bir şekilde kendinizi haklı çıkarmak için ...
İyi şanlar...

Aynı konudaki gönderiye, tüm bu tartışmanın başladığı gönderiye atıfta bulunuyorum. Bu yazının hangi konudan olduğunu göremiyorum. Bu nedenle, soru ortaya çıkıyor, belki de ruhla ilgili bir şeyiniz var mı?

Ve kör olmadı, ama sürprizden çıldırdı. Ama bu yazıyı buraya nereye sürükledin - bu ilginç.

Ve dikkat edin, bu yazının yazarı daha dün bunun mümkün olduğunu öğrendi. Bir şey öğrendim ama farkına varmadım, o yüzden bu konunun devamında anlamsız bir örnek yazdım. Ve zykspert nereye baktı?

 
Igor ru.wikipedia.org/wiki/Keeper_(design_pattern) tarafından verilen Wikipedia bağlantısındaki koda bakmak daha az ilginç değil. Java için ilk örnek. Bakıcı sınıfından bir conta ne için var? Sadece akıllı olmak mı? Ve aslında, her şey ek bir yapı ve iki yöntem kullanmaya geliyor - Büyük Kutsal Tasarım Kalıplarını hiç duymamış herhangi bir aptalın düşüneceği bir şey, sadece gereksiz dolgu olmadan ve hatta ait olduklarının farkında olmadan " büyük bilgi".
 
Uzun zaman önce, bir röportajda bana bir nesnenin ne olduğu soruldu. Cevap verdim - bir dizi yöntem ve hemen işe alındım. Sonra bana diğer adayların kedilerden, patilerinden, köpeklerinden ve çocuk kitaplarında programlama hakkında yazılan diğer şeylerden bahsetmeye başladıkları söylendi.
 
Evgeniy Zhdan :
Uzun zaman önce, bir röportajda bana bir nesnenin ne olduğu soruldu. Cevap verdim - bir dizi yöntem ve hemen işe alındım. Sonra bana diğer adayların kedilerden, patilerinden, köpeklerinden ve çocuk kitaplarında programlama hakkında yazılan diğer şeylerden bahsetmeye başladıkları söylendi.

Hikayenizin dersi nedir? herkes işe koyulur ve yerleşir - doğru zamanda ve doğru yerde olmanız gerekir, bu iş ... düğmeye basmak için boş bir yer vardı, bu yüzden kabul ettiler)))

Yoksa o zaman yabancı sertifikanız var mıydı? ;)


Not: Neden çalışıyorsun? yüksek maliyetler? - EA 100-300 bin ruble için ortalama bir çekiniz var, bence en az bir ay için yeterli olmalı))))


UPD: Bir ucube şovuna istemeden katıldığım bir his vardı, bu doğru değil! ((((

 

Açıklarım.

Mql5'te, profesyonellerde olduğu gibi iç içe sınıf, dış sınıfa göre bir arkadaştır (bu arada, tam olarak bu anı bilmiyordum), ancak mql4'te bu uygulanmadı ve orada, bir kez daha , koltuk değneği yazmanız gerekecek. Yani bu kod mql5'te doğru bir şekilde derlenecek, ancak mql4'te derleme hatası verecektir.

 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;}
   };
///////////////////////////////////////////////////////////
  };

Burada, elbette, bana bunun C ++ olmadığını hemen yazacaklar, ancak yine de bir benzetme yapacağım.

Resmi mql belgelerindeki iç içe sınıflar hakkında ve ayrıca ondan harici alanlara erişme özellikleri hakkında hiçbir şey hatırlamıyorum. Buna göre, tüm bunlar UB hakkında düşünceler uyandırıyor. Evet, işe yarıyor, ancak ilgili bilgiler rıhtımda görünene kadar, sanki kendi tehlikeniz ve riskiniz varmış gibi, üzerine bahse girin.