mengakses anggota objek anak ketika berada dalam vektor dasar [duplikat]
Saat ini saya mengalami masalah dalam mengakses anggota objek anak ketika berada dalam vektor dasar, saya tahu itu adalah masalah pemotongan objek, saya mencoba menggunakan transmisi dinamis tetapi saya seorang pemula dan saya tidak terlalu yakin dengan sintaks atau cara menggunakan itu, bantuan apa pun akan dihargai dengan pseudocode:
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
Jawaban
Jeffrey
Teknik pertama adalah mengandalkan fungsi virtual:
class Base
{
public:
virtual int doStuff();
}
Class Derived : public base
{
public:
virtual int doStuff();
}
Kemudian, items[0]->doStuff()
akan memanggil versi turunan.
Teknik kedua adalah downcast:
dynamic_cast<Derived*>(items[0]);
Ini akan memberi Anda salah satu nullptr
atau penunjuk objek Berasal Anda. Masalahnya adalah, Anda harus mengiklankan fungsi virtual agar ini berfungsi.
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan