problem z wielokortnym dziedziczeniem i metodami wirtualnymi

Odpowiedz Nowy wątek
2006-09-28 21:38
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

Pozostało 580 znaków

2006-09-28 22:08
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

Pozostało 580 znaków

2006-09-28 22:49
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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