bir temel vektörde olduğunda bir alt nesnenin üyesine erişim [duplicate]
Jan 20 2021
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 Jan 20 2021 at 07:47
İ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.
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
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ı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'