Wskaźnik do klasy bazowej a dostęp do obiektów klasy pochodnej

0

Witam,
Przy pisaniu programu pojawił mi się problem. Otóż tak to w uproszczeniu wygląda:
klasa.h

class A{
public:
int a; 
virtual int getA() = 0
}
class B:public A{
public:
int b; 
int getA()
}

main.cpp

 
A *obiekt;
obiekt = new B();
obiekt->b;

no i tak nie da rady, czy jest jakaś szans, żeby to jakoś obejść?

1

((B*)A)->b;
Zastanów się tworzysz coś ogólnego np Zyjątko od niego pochodzi dużo różnych żyjątek, między innymi:

  • Bakteria
  • Fryderykst
    No i teraz chcesz pobrać ilość napisanych postów na 4programmers dla Żyjątka, nie wiesz, może to Bakteria ale w każdym razie nie koniecznie nawet człowiek.
0

Dzięki za odpowiedź. Wiedziałem, że to błąd, nie wiedziałem tylko, że w tak prosty sposób można to obejść.
Jeszcze jedno. Jak poradzić sobie z konstruktorem kopiującym w takim przypadku?

A *b = new B();
A *a;
a = new B(*b)
1

Nie istnieje taka możliwość.
Chyba że w klasie bazowej zrobisz metodę wirtualną:
virtual A *A::clone()=0;
i oczywiście nadpiszesz ją dla każdej klasy.

0

A ta metoda nie powinna jako argumentu przyjmować A albo wskaźnika do A?
I mam ją używać zamiast konstruktora kopiującego?

1
A *b = new B();
A *a=b->clone();

1 użytkowników online, w tym zalogowanych: 0, gości: 1