• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ reference to ' ' is ambigious

Fiszki IT
Fiszki IT
0 głosów
49 wizyt
pytanie zadane 22 maja w C i C++ przez DeMajkel Początkujący (370 p.)

W zadaniu muszę wykorzystać wielodziedziczenie, a natykam się na taki problem (dodaje prosty przykład dla konkretu)

class Kwadrat
{
    protected:
    int a = 3; //dlugosc boku
public:
    void pole()
    {
        cout << a*a;
    }
};

class Prostokat :public Kwadrat
{
    protected:
    int b = 4; //dlugosc drugiego boku
private:
    void pole()
    {
        cout << a*b;
    }
};

class Trojkat :public Kwadrat
{
    protected:
    int h = 4; //wysokosc
public:
    void pole()
    {
        cout << (a*h)/2;
    }
};

class Trapez :public Kwadrat, public Trojkat, public Prostokat
{
    void pole()
    {
        cout << (a+b)*h;
    }
};

Dla linijki 38 wyświetla się komunikat, że referencja 'a' jest niejednoznaczna i przez to się nie kompiluje. Szukałem w netach i było tylko, żeby usunąć "using namespace std;", lecz nic to nie pomogło

komentarz 22 maja przez Wiciorny Mędrzec (166,950 p.)
a do czego należy "a"? :) skoro ostatni Trapez dziedziczy po Kwadracie, Trójkącie, Prostokącie, te z kolei dziedziczą po tym ostatnim, do którego należy a, ale same w sobie też posiadają odwołanie do pola "a" ?

Pola klasy bazowej, sa dziedziczone w klasach pochodnych

@tkz dodał ciekawy artykuł w tej kwestii o niejednoznaczności
komentarz 23 maja przez Oscar Pasjonat (19,010 p.)

@DeMajkel,  pole a masz dziedziczone 3 razy, musisz albo sprecyzować o które chodzi pisząc np. Kwadrat::a, Trojkat::a itp, albo zastosować dziedziczenie wirtualne, które zapewni istnienie tylko jednej instancji pola a.

1 odpowiedź

+1 głos
odpowiedź 22 maja przez tkz Nałogowiec (39,540 p.)

Podobne pytania

0 głosów
2 odpowiedzi 80 wizyt
0 głosów
1 odpowiedź 414 wizyt
pytanie zadane 25 sierpnia 2019 w C i C++ przez DamianW Bywalec (2,070 p.)
0 głosów
1 odpowiedź 130 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

84,751 zapytań

133,554 odpowiedzi

295,978 komentarzy

56,010 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...