Problem z dziedziczeniem wielokrotnym

0

Idea jest taka: dwa interfejsy ModelFace i dzidziczący po nim ModelExFace. Do tego dwie klasy: Model - oparta na interfejsie ModelFace oraz klasa ModelEx oparta na interfejsie ModelExFace, która dziedziczy klase Model. No i tu sie pojawai problem, aby klasa ModelEx kożystała z interfejsu ModelExFace (czyli również ModelFace) i jednocześnie dziedziczyła po klasie Model.
Naiwna implementacja wygląda tak

class ModelFace {
public: virtual void func() = 0;
};

class Model: public ModelFace {
public: virtual void func() { /*jakiskod*/ };
};

class ModelExFace: public ModelFace {
public: virtual void funcex() = 0;
};

class ModelEx: public ModelExFace, public Model {
public: virtual void funcex() { /*jakiskod*/ };
};

Jednak kompilator zgłasza, że ModelEx jest klasą abstrakcyjną z powodu funkcji ModelFace::func() = 0, oraz istnieje dwuznaczność przy wywołaniu func() pomiędzy ModelFace::func() a Model::func().

Jak sobie z tym poradzić ?

0

http://www.parashift.com/c++-faq-lite/multiple-inheritance.html
[25.8] What is the "dreaded diamond"?

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