bir temel vektörde olduğunda bir alt nesnenin üyesine erişim [duplicate]
Bir temel vektördeyken bir alt nesnenin bir üyesine erişmede sorun yaşıyorum, bunun bir nesne dilimleme sorunu olduğunu biliyorum, dinamik döküm kullanmaya çalışıyorum ama yeni başlayan biriyim ve sözdiziminden veya nasıl kullanılacağından gerçekten emin değilim herhangi bir yardım sözde kod olarak takdir edilecektir:
class Base {}
Class Derived : public base {
bool A
}
std::vector<Base*> items;
Item* i = new Derived(constructor);
items.push_back(i);
// items[0]->A isnt accessible due to object slicing
Yanıtlar
Jeffrey
İlk teknik, sanal işlevlere güvenmektir:
class Base
{
public:
virtual int doStuff();
}
Class Derived : public base
{
public:
virtual int doStuff();
}
Ardından, items[0]->doStuff()
türetilmiş sürümü çağıracaktır.
İkinci teknik, aşağı inmek:
dynamic_cast<Derived*>(items[0]);
Bu size ya bir nullptr
ya da Türetilmiş nesne işaretçinizi verecektir . Sorun şu ki, bunun çalışması için sanal bir işlev eklemeniz gerekecek.
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'