Jeśli mam klasę podstawową, tylko z metodami wirtualnymi i 2 klasami pochodnymi z klasy z klasą podstawową, z zaimplementowanymi tymi metodami wirtualnymi.Wskaźnik do tablicy klasy bazowej, zapełnij klasą pochodną
Jak to zrobić:
// causes C2259
BaseClass* base = new BaseClass[2];
BaseClass[0] = new FirstDerivedClass;
BaseClass[1] = new SecondDerivedClass;
czyli
// causes "base is being used without being initialized"
BaseClass* base;
// causes CC59 again
BaseClass* base = new BaseClass;
base[0] = FirstDerivedClass();
base[1] = SecondDerivedClass();
(lub coś podobnego)
... tak, że można uzyskać dostęp do BaseClass
s metod przez DerivedClass
, ale przez wskaźnik i wskaźnik jest tablicą DerivedClass
s?
Problem, który jest nazywany "krojeniem obiektów", nie jest charakterystyczny dla tablic - zdarza się za każdym razem, gdy przypisujesz klasę pochodną do klasy bazowej * według wartości *. Na przykład. 'BaseClass b; b = FirstDerivedClass(); 'jest kompilowanym C++, który jednak łamie się cicho (w najlepszym wypadku może pojawić się ostrzeżenie kompilatora). –
Link wydaje się być przeniesiony. – user6003859
@ user6003859 Zaktualizowałem, dzięki za spekulacje! – Jon