Temel sınıfım varsa, yalnızca sanal yöntemleri ve temel sınıfını kullanarak bu sanal yöntemlerle bir temel sınıfım varsa.Temel sınıf dizisini işaret eden türetilmiş sınıfla doldurun
Nasıl yapılır:
// causes C2259
BaseClass* base = new BaseClass[2];
BaseClass[0] = new FirstDerivedClass;
BaseClass[1] = new SecondDerivedClass;
ya:
// causes "base is being used without being initialized"
BaseClass* base;
// causes CC59 again
BaseClass* base = new BaseClass;
base[0] = FirstDerivedClass();
base[1] = SecondDerivedClass();
(veya benzeri)
... Ben DerivedClass
aracılığıyla BaseClass
s yöntemleri erişebileceği şekilde, ama işaretçi ve işaretçi DerivedClass
s dizisidir?
"Nesne dilimleme" olarak adlandırılan sorun, dizilere özgü değildir - türetilmiş bir sınıfı bir temel sınıfa * değer * atadığınız her zaman oluşur. Örneğin. 'BaseClass b; b = FirstDerivedClass(); 'yine de sessizce kıran (ancak en iyi ihtimalle bir derleyici uyarısı alabilirsiniz) C++ ile karşılaştırılabilir. –
Link taşınmış görünüyor. – user6003859
@ user6003859 Güncelleme yaptım, teşekkürler! – Jon