[C++] "ambiguous conversion", problem przy wielodziedziczeniu
Ostatnio zmodyfikowano 2013-11-12 20:17
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ć? |
|
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. class Prostokat : public virtual Figura class Trojkat : public virtual Figura I problem się sam rozwiązał. |
|
« 1 » |