Wpis z mikrobloga

#programowanie w #cpp - Dziedziczenie wirtualne
Robiłem zadanie z Praty - konkretnie rozdział 14, zadanie 4, Język C++ Szkoła programowania wyd. 6
Mam jakąś klasę A jako bazową. Klasa B dziedziczy publicznie po A, klasa C dziedziczy publicznie wirtualnie po A. Klasa D dziedziczy publicznie po B i publicznie po C. Kompilator( MS VS Express 2013) nie dopuszcza do kompilacji takiego kodu wskazując na niejednoznaczność. Racja, są 2 obiekty klasy A w klasie D. Na liście inicjalizacyjnej klasy D jest wywołany konstruktor klasy A. Według książki jest wszystko ok, bo w klasach wirtualnych trzeba te konstruktory wywoływać jawnie. Wywołany jest też konstruktor klasy C, jednak jako, że dziedziczy wirtualnie po A to nie wywołuje jego konstruktora, więc tu nie powinno kolidować.
Oczywiście rozwiązaniem jest dziedziczenie wirtualne klasy A przez klasę B. Wtedy wszystko działa. Jednak nie wiem jak zrobić, żeby w powyższym przypadku wszystko działało. Wirtualne destruktory są porobione, konstruktory też dla każdej z klas.
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach