Hatalar, hatalar, sorular - sayfa 1892

 
fxsaber :
Böyle bir soru daha
Koruyucu çalışma.
 
Renat Fatkhullin :
Koruyucu çalışma.
şakaysa, o zaman komik)) ve değilse, lütfen programlamada koruyucunun ne olduğunu açıklayın
 
Konstantin :
lütfen programlamada koruyucunun ne olduğunu açıklayın
kod çözücüleri ortadan kaldıran şey
 
Renat Fatkhullin :

Evet, sorunuzu gösteren bir örnek:

ve çıktı:

İlk olarak, çözülmemiş dökümü aşağıdan yukarıya doğru kontrol edip NULL alıyoruz. Pekala.

Sonra bir CLASS2 nesnesi yaratırız, ona üst sınıfa bir referans atarız (burada dinamiklerde ortamın CLASS2 nesnesinin yerel türünün meta bilgisinde saklandığını bildiğini anlamak önemlidir). Daha sonra (sadece sorunuz) CLASS1 bağlantısından CLASS2'ye dinamik olarak (orijinal nesnenin meta bilgisine dayalı olarak dönüştürme hakkını kontrol ederek) yayınlıyoruz.

Döküm sonucunu kontrol ediyoruz ve i = 1 değişkenine yazıyoruz. Son olarak, başlangıçta oluşturulan nesneye atıfta bulunarak i değerini gösteriyoruz.

Her şey doğru ve spesifikasyona göre çalışıyor (C++'ın kendi spesifikasyonuna dynamic_cast dahil).

Açıklama için teşekkürler, şimdi MQL'de tip döküm hakkında net görünüyor)) Ama o zaman dinamik_cast'in neden yaratıldığı açık değil, eğer her durumda aşağıdan yukarıya yayın yapamıyorsak ve yukarıdan aşağıya onsuz yapabiliriz. dinamik_cast ? Belki burada bazı incelikler vardır ve ben onları anlamadım?
 
Konstantin :
Açıklama için teşekkürler, şimdi MQL'de tip döküm hakkında net görünüyor)) Ama o zaman dinamik_cast'in neden yaratıldığı açık değil, eğer her durumda aşağıdan yukarıya yayın yapamıyorsak ve yukarıdan aşağıya onsuz yapabiliriz. dinamik_cast ? Belki burada bazı incelikler vardır ve ben onları anlamadım?

Kodu ve açıklamamı tekrar okuyun lütfen.

Ayrıca, döküm hoparlörünün, orijinal olarak oluşturulan nesnenin meta bilgisine dayanarak, dökümü aşağıdan yukarıya doğru nasıl güvenli bir şekilde yükseltebileceğini gösterir. Bir çocuktan bir nesne oluşturulmuşsa, daha sonra üst sınıfın bir referansına dönüştürülürse, daha sonra meta-bilgiye dayanarak (orijinal nesne gerçekten bir çocuktur), bu referans güvenli bir şekilde bir çocuğa dönüştürülebilir.

Genellikle, çeşitli torunlara ait nesneler bir diziye/üst sınıfa yapılan başvurular listesine eklendiğinde ve daha sonra alınıp bir veya başka bir torununa güvenli bir şekilde yayınlandığında kullanılır. Alım NULL olarak değerlendirilirse, nesne istenen alt öğe değildir ve işlenmemelidir.

 
Renat Fatkhullin :

Kodu ve açıklamamı tekrar okuyun lütfen.

Ayrıca, döküm hoparlörünün, orijinal olarak oluşturulan nesnenin meta bilgisine dayanarak, dökümü aşağıdan yukarıya doğru nasıl güvenli bir şekilde yükseltebileceğini gösterir. Bir çocuktan bir nesne oluşturulmuşsa, daha sonra üst sınıfın bir referansına dönüştürülürse, daha sonra meta-bilgiye dayanarak (orijinal nesne gerçekten bir çocuktur), bu referans güvenli bir şekilde bir çocuğa dönüştürülebilir.

Genellikle, çeşitli torunlara ait nesneler bir diziye/üst sınıfa yapılan başvurular listesine eklendiğinde ve daha sonra alınıp bir veya başka bir torununa güvenli bir şekilde yayınlandığında kullanılır. Alım NULL olarak değerlendirilirse, nesne istenen alt öğe değildir ve işlenmemelidir.

Kodu okudum, ama öyle mi:

CLASS2 *my_ptr2= dynamic_cast <CLASS2 *>(my_ptr);

buna benzer değil:

CLASS2 *my_ptr2=(CLASS2*)my_ptr;

dynamic_cast kullanarak kod yürütürken bir hata almamamız dışında, dynamic_cast kullanmanın inceliklerini yakalayamıyorum. dynamic_cast , hata durumunda NULL döndürür

 
Konstantin :

Kodu okudum, ama öyle mi:

buna benzer değil:

dynamic_cast kullanarak kod yürütürken bir hata almamamız dışında, dynamic_cast kullanmanın inceliklerini yakalayamıyorum. dynamic_cast , hata durumunda NULL döndürür

C++'dan dymanic_cast özelliklerini google'a tavsiye ederim.

Bu banallik.

 
PC kaynaklarını buluta dağıtırken, oyuna başlarken bir kilitlenme meydana geliyor - oyun " Call of Duty: Black   Operasyonlar   III "çökmeler - 1 ajan dahil oldu. Aracının minimum önceliği vardı - 16'dan 3.5 gigabayt bellek tüketti - genel olarak herhangi bir sorun olmamalıydı. Etkin olmayan ajanlarla oyun normal şekilde oynandı. Ajanlar için test edildi mi? diğer programlarla uyumluluk?
 
-Aleks- :
PC kaynaklarını buluta dağıtırken, oyuna başlarken bir kilitlenme meydana geliyor - oyun " Call of Duty: Black   Operasyonlar   III "çökmeler - 1 ajan dahil oldu. Aracının minimum önceliği vardı - 16'dan 3.5 gigabayt bellek tüketti - genel olarak herhangi bir sorun olmamalıydı. Etkin olmayan ajanlarla oyun normal şekilde oynandı. Ajanlar için test edildi mi? diğer programlarla uyumluluk?

Nedense, oyuncakta bir hata olabileceği fikri hemen geldi ve program> 4 GB adres alanına yüklendiğinde 64 bit makinelerde çalışmanın özellikleriyle ilgiliydi.
 
Sergey Dzyublik :

Nedense, oyuncakta bir hata olabileceği fikri hemen geldi ve program> 4 GB adres alanına yüklendiğinde 64 bit makinelerde çalışmanın özellikleriyle ilgiliydi.

Onlar. Bu hipotezi test etmek için RAM'i 4 gigabayttan fazla doldurmanız ve oyuna başlamanız gerekiyor - oğlumun nasıl yeterince oynadığını deneyeceğim.