Wpis z mikrobloga

Program ma implementować poniższa hierarchię klas. Dodawanie i usuwanie obiektów ma być możliwe tylko dla klas które nie mają potomka. Zeby uniemożliwić dodawanie obiektów do klas nie będących "liśćmi" uczyniłem te klasy abstrakcyjnymi. I teraz kwesia jkaiego rodzaju destruktorów użyć żeby to się nie wywalało? Bo dla klas niebdących liściami utworzyłem konstruktory wirtualne, ale nie wiem co z liściami..

#programowanie #cpp
źródło: comment_Yater9lWnywKQkbiI0un3QovI4EvJXG2.jpg
  • 12
@Spica: Konstruktory wirtualne? Może jeszcze statyczne? :)

Nie no żarty na bok. Sprawa jest prosta. W Figura deklarujesz metodę, np "std::string getName() const", ale deklarujesz ją jako czysto wirtualną, czyli:

virtual std::string getName() const = 0;

Następnie implementację dajesz tylko dla klas, które mogą być konstruowane. Tyle.

P.S. Destruktor zaznaczyć jako wirtualny wystarczy w Figura. Reszta klas dziedziczących odziedziczy wirtualność destruktora.
@Spica: jakbys skończył to podrzucisz kod. Ja właśnie miałem pisać coś podobnego, a z kodu mógłbym się czegoś nauczyć. Z gory dzięki.