problem z wielokortnym dziedziczeniem i metodami wirtualnymi

0

Witam nie wiem czemu program sie nie kompiluje

class Podstawowa
{
     virtual void func1( void ) = 0;
};

class Rozszerzona : public Podstawowa
{
    virtual void func2( void ) = 0;
};

class ImplementujPodstawowa : public Podstawowa
{
    void func1( void ) { /*cos*? }
};

class ImplementujRozszerzona : public Rozszerzona, public ImplementujPodstawowa
{
     void func2(void ) { /*cos*/ }
};

Problem jest z klasą ImplementujRozszerzona (IR) , a mianowicie pojawia się bład, że nie można utworzyć obiektu klasy abstrakcyjnej w momęcie kiedy próbuję stworzyć obiekt klasy IR chodzi o metodę func1() co dla mnie jest dziwne przecież jest ona zaimplementowana w jednej z klas bazowych.

Proszę o pomoc
pozdr

0

W sytuacji ktora jest u Ciebie , klasa Rozszerzona i ImplementujPodstawowa dziedzicza z dwoch roznych klas Podstawowa , w klasie najbardziej wyprowadzanej przeslaniasz func2 ale func1 jest przeslonieta tylko w jednym przypadku , poniewaz klasa najbardziej wyprowadzana dziedziczy po dwoch roznych klasach Podstawowa , masz przeslonieta metode func1 lecz tylko jedna( znajdujaca sie w klasie bazowej klasy ImplementujRozszerzona ) a nie ma przeslonietej metody po klasie Rozszerzona(ktora tez dziedziczy metode func1 lecz z innej klasy Podstawowa ) , jako rozwiazanie proponuje albo

  1. przesloniecie w klasie najabrdziej wyprowadzanej metody func1
  2. uzycie dziedziczenia wirtualnego
0

OK super za pomoc 1 sposob odpada bo po to zdziedziczylem z klasy ImplementujPodstawowa abym nie musial drugi raz implementowac func1 wiec zostaje metoda 2 poczytalem i to jest wlaśnie to dzieki serdeczne:)

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