Daha önce mümkün müydü?
Evet. Eski yapı (1554) üzerinde özel olarak kontrol edildi - her şey çalışıyor.
Akşam C ++ 'da böyle bir beyanla nasıl kontrol edeceğim
Lütfen bu yapıyı kullanmanın bir örneğini sağlayın.
Lütfen bu yapıyı kullanmanın bir örneğini sağlayın.
En banal örnek dizi sınıfıdır. Bu durumda, herhangi bir işaretçiyi saklamak için kullanılır:
template < typename T> class CArray { T _data[]; public : T operator []( int i) const { return _data[i]; } int Size() const { return ArraySize (_data); } // и т.д. }; СArray< void *> pointers;
En banal örnek dizi sınıfıdır. Bu durumda, herhangi bir işaretçiyi saklamak için kullanılır.
O zaman nasıl kullanılır?
class A { public : void OnInit () { Print ( __FUNCSIG__ ); } }; class B { public : void OnInit () { Print ( __FUNCSIG__ ); } }; void OnStart () { void * Pointers[ 2 ]; A a; B b; Pointers[ 0 ] = &a; Pointers[ 1 ] = &b; for ( int i = 0 ; i < ArraySize (Pointers); i++) Pointers[i]. OnInit (); // 'OnInit' - member function not defined }
Orijinal olarak oraya koyduğunuz türe yayın yaparsınız (veya dynamic_cast aracılığıyla kontrol edersiniz).
// (A*)Pointers[i].OnInit(); ((A*)Pointers[i]). OnInit ();
Bu sadece parantezlerin gerekliliği / işe yaramazlığı ile ilgili ... Böyle bir döküm ile, çalıştırıldığında yukarıdaki komut dosyasında bir serseri olacaktır. Onlar. dizi işaretçi öğeleri tarafından başvurulan sınıfların adlarını bilmeniz gerekir.
O zaman rahatlığın ne olduğunu anlamadım.
MQ yalnızca tek bir yerde void* kullanır.
typedef string (*DoubleToStringFunction)( double , void *);
MQ yalnızca tek bir yerde void* kullanır.
Çünkü CObject üzerine inşa edilmiş her şeye sahipler. Ve bu, onların kapsayıcılarını kendi sınıfları ve sınıflarından miras alınmayan arayüzler için kullanmayı imkansız hale getirir. Onlar. evrensel bir çözüm değil.
Belki de bu, kitaplıklarının oluşturulduğu sırada MQL'de henüz boşluk* olmamasından kaynaklanmaktadır. Öte yandan, nesnenin kendisi de kendi içinde vahşi olan bazı manipülasyonlara (içindeki işaretçilerin değerleri değişir) katılır.
Çünkü CObject üzerine inşa edilmiş her şeye sahipler. Ve bu, kapsayıcılarını kendi sınıfları ve sınıflarından miras alınmayan arabirimler için kullanmayı imkansız hale getirir. Onlar. evrensel bir çözüm değil.
Belki de bu, kitaplıklarının oluşturulduğu sırada MQL'nin henüz geçersiz* olmamasından kaynaklanmaktadır.
Maalesef bir kullanım örneği görmedim.
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Derleyici hatası. 1961, 64 bit oluşturun.