Hatalar, hatalar, sorular - sayfa 1890
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
çalışma zamanı hatası nedir
Doğru, aşağıdan yukarıya verilemez, sadece yukarıdan aşağıya. Bu güvenlik içindir.
C ++ ile karşılaştırmak imkansızdır - oradaki herhangi bir şeye her şey getirilebilir.
C++'da bu, yalnızca temel sınıfın işaretçisi bir çocuğu işaret ediyorsa mümkündür.
Bununla ne demek istediğini anlamadım, ama bu kod:
Doğru, aşağıdan yukarıya verilemez, sadece yukarıdan aşağıya. Bu güvenlik içindir.
C ++ ile karşılaştırmak imkansızdır - oradaki herhangi bir şeye her şey getirilebilir.
şimdi anladım açıklama için teşekkürler :)
Bununla ne demek istediğini anlamadım, ama bu kod:
Doğru, aşağıdan yukarıya verilemez, sadece yukarıdan aşağıya.
Temel sınıftan torunlara kadar sonuç almak imkansız mı?
Evet, gerçekten inşa edilmiş bir çocuğun tabanda yatmaması durumunda.
Doğru, aşağıdan yukarıya verilemez, sadece yukarıdan aşağıya. Bu güvenlik içindir.
Evet.
Renat, dynamic_cast'in ne olduğunu biliyor musun?
Kesinlikle.
MQL5 kodunun tartışılan parçasına bir göz atın. Temel bir örnek oluşturulur ve ardından kahramanca, güvenlik sistemini ihlal ederek, oyuncu kadrosu aracılığıyla bir soyundan gelene dönüşmeye çalışır. Eh, elbette bir serseri.
Doğrudan belgelerde aynı örnek dikkate alınır ve açıklanır. Çalışma zamanında dinamik yayın, yalnızca güvenlik ve doğrulama denetimlerini geçtikten sonra tetiklenir. Her MQL5 nesnesi, çalışma zamanında izinleri kontrol etmek için tüm meta bilgilere sahiptir. Boş C++ değil.
dynamic_cast operatörüyle dinamik tip döküm
Sadece sınıf işaretçilerine uygulanabilen dynamic_cast operatörünü kullanarak dinamik tip döküm olasılığı vardır. Bu durumda, program yürütülürken türlerin doğruluğu kontrol edilir. Bu, dynamic_cast operatörünü kullanırken, derleyicinin, döküm için kullanılan veri türünü kontrol etmediği anlamına gelir. Bir işaretçi, nesnenin gerçek türü olmayan bir veri türüne dönüştürülüyorsa, sonuç NULL olur.
dynamic_cast <type-id> ( ifade )
Köşeli parantez içindeki type-id parametresi , önceden tanımlanmış bir sınıf tipine işaretçi olmalıdır. İşlenen türü ifadesi (C++'dan farklı olarak) void dışında herhangi bir şey olabilir.
Misal:
sınıf CBar { };
sınıf CFoo : genel CBar { };
geçersiz Açılışta ()
{
CBar çubuğu;
//--- *bar işaretçi türünün *foo işaretçisine dinamik olarak aktarılmasına izin verilir
CFoo *foo = dynamic_cast <CFoo *>(&bar); // kritik çalışma zamanı hatası oluşmayacak
yazdır (foo); // foo=NULL
//--- Bar türündeki bir nesnenin referansını açıkça Foo türündeki bir nesneye dönüştürmeye çalışmak yasaktır
foo=(CFoo*)&bar; // kritik bir çalışma zamanı hatası oluşacak
yazdır (foo); // bu satır yürütülmeyecek
}