Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] "ambiguous conversion", problem przy wielodziedziczeniu

Ostatnio zmodyfikowano 2013-11-12 20:17
Autor Wiadomość
deoomen
Temat założony przez niniejszego użytkownika
[C++] "ambiguous conversion", problem przy wielodziedziczeniu
» 2013-11-12 20:04:27
Witam.

Piszę program, który "tworzy" figury geometryczne. Mam problem z utworzenie trapezu. U mnie trapez dziedziczy po prostokącie (który to dziedziczy po głównej klasie bazowej Figura) i po trójkącie prostokątnym (który dziedziczy po klasie Trojkat, a który dziedziczy po klasie Figura).
Problem pojawia się gdy chcę utworzyć nowy trapez:

tabCFigura[ CFigura::ilefig() ] = new CTrapez( a, b, h, x, y );

Otrzymuję błąd: "error C2594: '=' : ambiguous conversions from 'CTrapez *' to 'CFigura *'".

Klasa Figura zawiera zmienne: x1 y1 x2 y2 oraz xs ys
Klasa Prostokat zawiera zmienne: a b x3 y3 x4 y4
Klasa Trojkat zawiera zmienne: a b c h x3 y3

Może to coś z przesłanianiem zmiennych?

Dodam iż przy pozostałych figurach podobny zapis działa bez problemu lecz tylko tutaj korzystam z wielodziedziczenia i myślę, że to tutaj tkwi problem lecz nie mogę go dojrzeć.
Ktoś jest w stanie coś doradzić?
P-96132
deoomen
Temat założony przez niniejszego użytkownika
» 2013-11-12 20:17:53
Dobra. Poradziłem sobie już sam.
Napiszę jak, może komuś się przyda.

Wystarczyło w klasie Prostokat i Trojkat dopisać słówko "virtual" przy dziedziczeniu po klasie bazowej.
C/C++
class Prostokat
    : public virtual Figura

C/C++
class Trojkat
    : public virtual Figura

I problem się sam rozwiązał.
P-96133
« 1 »
  Strona 1 z 1