Singleton modelini MQL4'te uygulamak mümkün mü? - sayfa 8

 
ALXIMIKS :

Kapsüllemeyi unutmuşum. Ve silebilirsiniz. Ancak burada sabit işaretçiler yoktur) Ve genel olarak, singleton en iyi model değildir.

Bazı şablonlara sahip olmak iyidir. Dersler için, belki de sadece bir rüya.

 
Scriptong :
Statik sınıf üyelerinden bahsediyorduk. Ayrıca benim örneğimde m_a özel bir üyedir. Ve bu tür sınıf üyelerine yalnızca sınıfın örneklerinden erişilebilir. Bu nedenle, sınıf örnekleri dışında kodun hiçbir yerinde bir değişkenin değeri değiştirilemez. Bu, gelecekte olası birçok hatayı ortadan kaldıran güvenli kod yazma meselesidir.


Pekala, halkın başka bir şey hakkında düşünmesini sağladım, onu kaldırarak statik ile ilgili ne değişecek - sınıfın içinden - hiçbir şey ?!

ancak, sınıf üyelerinin statik olarak bildirilememesi, bu verilerin programın küresel düzeyinde bildirilmesi ihtiyacına yol açacaktır .

Konu keşfedilmemiş kaldı.

 
sergeev :

bu, mql'nin serinliği ile desteklendi

kelimelerle uğraşmayın

Genel olarak "doble dokümantasyonu" okurken, canınızı sıkmamalısınız. Çünkü yanlış bir şey var. Ve sonra bir tür "akıllı adam" ortaya çıkıyor, birkaç mesaj yukarıda ve tartışmaya başlıyor. Ve durum öyle ki, çok dikkatliyim. Belirli bir veri türünden bahsettiğimizi okursam, o şekilde algılarım. Bu bir kusursa, kabul etmek gerekir.
 
ALXIMIKS :

Biri singleton hakkında bağırdı

Ve şablonların sınıflara ve açık bir parametre ayarına genişletilmesi planlanıyor mu? Sonra küfrediyor ve gerçekten çok şey istediğimi söylüyor.

Not, SomeClass sınıfını Singleton içinde bildirmek daha doğrudur (o zaman tam olarak yalnızca bir SomeClass örneği    oluşturulabilir), ancak doğru olmasa da bir şekilde daha açık bir şekilde


Bütün bunlar gördüm. Bunu özellikle yapıma nasıl uygulayacağımı merak ediyordum. Ve sadece bir kaynaktan kopyala-yapıştır görmek için değil. Onu bende yapabilirim)

Genel olarak, Igor'un tavsiyesi üzerine, görünüşe göre bunun benim için yararlı olmayacağını anladım. Bu yüzden artık bu modelden bahsetmiyorum. Ve C++ - new'den farklı olan sahte belgelerle ilgili olarak, durum açıkça böyledir. Ama yine, bu konuda yapabileceğiniz hiçbir şey yok.

Şimdilik elimden geldiğince yazmakla yetineceğim. Bir alternatif olana kadar.

 

Sevgili, bu yazıda yanlış olan neydi ???

ALXIMIKS   03.09.2014 15:34   #
saat :

Bir sınıfın veya yapının değişkenleri programın yürütülmesi sırasında değerlerini kaybetmiyorsa, neden burada statik olarak bildiriliyor?

Kamusal kesimdeler, yapıda olduğu gibi diyebiliriz...


Ya ağır zekalısın ya da ağır zekalısın, direkt olduğum için üzgünüm, siyah beyaz yazılmış:

Örneğin, metinleri ayrıştırmak için bir CParser sınıfımız var ve işlenen toplam kelime ve karakter sayısını saymamız gerekiyor . Gerekli sınıf üyelerini static olarak bildirmek ve bunları global düzeyde başlatmak yeterlidir . Ardından, sınıfın tüm örnekleri, işlem sırasında ortak sözcük ve karakter sayaçlarını kullanır .

Şunlardan en az bir kez bahsediliyor:

program yürütme sırasında sınıf veya yapı değişkenleri değerlerini kaybeder

Burada, OOP ilkelerini koruyarak ve global değişkenler yaratmayarak, statik bir sınıf üyesi kullanarak oradaki bazı kelimelerin sayısını sayabileceğimizi söylüyor,

o (statik bir sınıf üyesi) tek bir örnekte oluşturulur ve bu sınıfın oluşturulan nesnelerinin sayısına bağlı değildir.

 

Yapı ve sınıfla ilgili anlaşılmaz baskınların yanı sıra, birdenbire kendi başınıza icat ettiğiniz sorunları,

Bir bütün olarak değişkenlerin özelliklerinin toplu bir kavramı olarak OOP ve depolama süresinin temellerini anlamadığınız gerçeğiyle ilgilenin ???

 
ALXIMIKS :

Sevgili, bu yazıda yanlış olan neydi ???

Okuyamıyorsan o senin sorunun. İşte sorduğumdan bir alıntı. Aceleyle bir yerde yazım hatası yaptıysam veya yanlış bir şey yazdıysam, bunun nedeni sizin gibi "akıllı"ların zaten burada sohbet etmesidir. Okumayı öğrendiyseniz, özellikle sıkıcı olanlar için gönderiye kalıcı bir bağlantı https://www.mql5.com/ru/forum/152923/page6#987432

 
Mesajda yanlış olan neydi? Evet okuyamıyorum, soruyu cevaplayabildiğin için cevapla)
 
struct A{
   static struct B{
      int x;
      int y;
   }Single;
};


void OnStart()
{
        A::Single.x = 5;
        Alert(A::Single.x);
}
 

2 günlük ıstırabın statik ve sınıfta farklı davrandığını anlamadın mı???

yol boyunca, yapılar C'den alındı ve kalıtım açısından sadece biraz pompalandı,

bu sınıfları sallar, onlar tam teşekküllü.

Bu nedenle, yapılarda statik bir değişken için yer ayırmak gerekli değildir.

 struct A{
   static    int x;
};

ve sınıflarda aksi takdirde yer ayırtmak gerekir:

 class B{
public :
   static    int x;
};
int B::x = 0 ;