Mam klasę, która jest pochodną od innej, używam tablicy wskaźników klasy bazowej do przechowywania instancji klasy pochodnej, ale ponieważ tablica jest z klasy bazowej, I nie można uzyskać dostępu do elementów należących do klasy pochodnej za pomocą notacji wskaźnika, czy mogę uzyskać dostęp do tych elementów za pomocą prostego polecenia lub czy powinienem przepisać klasę podstawową, aby zdefiniować element i użyć go tylko w klasie pochodnej?Członek dostępu klasy pochodnej od wskaźnika klasy bazowej
Przykład:
class A {
public:
int foo;
};
class B : public A {
public:
char bar;
};
class C : public A {
int tea;
};
int main() {
A * arr[5];
arr[0] = new B;
char test = arr[0]->bar; //visual studio highlights this with an error "class A has no member bar"
return 0;
}
O ile wiem, nie można uzyskać dostępu do elementu klasy pochodnej od wskaźnika klasy bazowej. Po prostu dlatego, że klasa bazowa w ogóle go nie rozpoznaje. Możesz jednak uzyskać dostęp do elementu klasy bazowej ze wskaźnika klasy pochodnej, ponieważ hierarchia mówi, że ** członkowie publiczni klasy bazowej są teraz także członkami klasy pochodnej **. –
Ale dane technicznie istnieją, prawda? Czy mogę to zrobić za pomocą przesunięcia pamięci? – Stephen
Do tego służą wirtualne metody. Jeśli jeszcze nie nauczyłeś się metod wirtualnych w swojej klasie C++, teraz jest to doskonała okazja, aby to zrobić. –