Şablon parametreli derleyici hatası = void* - sayfa 20

 
pavlick_ :

Sanallık ile w üzerinden lamba düğmesi:

hileli örnekler.

Bu bir polimorfizm örneği değil, bir model örneği de değil. Bu sadece bir bool değişkeni kullanmanın bir örneğidir ve başka bir şey değildir (kalın bir kabuk tabakası dışında).

Şablonlar hiçbir şekildepolimorfizmin yerini alamaz.

 
Dmitry Fedoseev :

Şablonlar hiçbir şekildepolimorfizmin yerini alamaz.

Aksini nerede söyledim? İşin püf noktası, şablonları polimorfizmle değiştirmeye çalışmalarıdır.

 
pavlick_ :

Aksini nerede söyledim? İşin püf noktası, şablonları polimorfizmle değiştirmeye çalışmalarıdır.

Bunun yerine, normal OOP yaklaşımını bir koltuk değneği ile değiştirmeye çalışıyorsunuz) Şablonlar esasen yalnızca depolanan veriler için gereklidir. IComparable<T> gibi bazı arayüzlerde

Onlardan pratik olarak hiçbir performans avantajı yoktur. İkinci örneğinizde, derleyici her şeyi satır içine alacaktır, çünkü orada her şey nettir.

 
Alexey Navoykov :

Bunun yerine, normal OOP yaklaşımını bir koltuk değneği ile değiştirmeye çalışıyorsunuz) Şablonlar esasen yalnızca depolanan veriler için gereklidir. IComparable<T> gibi bazı arayüzlerde

Onlardan pratik olarak hiçbir performans avantajı yoktur. İkinci örneğinizde, derleyici her şeyi satır içine alacaktır, çünkü orada her şey nettir.

Bu benim örneğim değil, klasik bir bağımlılık ters çevirme örneği. Ve basitliği hakkında gevezelik etmeyin, bu sadece fikri gösteriyor, eğer bir kod sayfası yazsaydım, "evet, evet, bu tamamen başka bir şey" der miydiniz?

Şablonlar koltuk değneği oldu, evet ... . Tamam, bununla bitireceğim.

 
Bu arada, void*'e dönersek, şimdi fark ettim ki, dinamik_cast bile onunla C++'da çalışmıyor (derleme yapmıyor), bu mantıklı, çünkü sadece bir bellek alanına kişisel olmayan bir işaretçimiz var. Bu nedenle, yalnızca açıkça yayınlanabilir. Buna göre, tam olarak ne tür olduğunu bilmeniz gerekir. Bu nedenle, void* tek başına C++'da işe yaramaz. Ancak MQL'de her şey farklıdır. Ancak uyumluluk nedenleriyle, dynamic_cast kullanmaktan kaçınmalı ve void* tipi işaretçilerle silmelisiniz .