Scenariusz generujący to jest dość skomplikowany, więc rozbiorę kilka części i przedstawię dokładną reprezentację zaangażowanych zajęć.C++ Multiple Inheritance Question
/* This is inherited using SI by many classes, as normal */
class IBase
{
virtual string toString()=0;
};
/* Base2 can't inherit IBase due to other methods on IBase which aren't appropriate */
class Base2
{
string toString()
{
...
}
};
/* a special class, is this valid? */
class Class1 : public IBase, public Base2
{
};
Czy to jest ważne? Czy wystąpią konflikty na toString? Czy może Class1 użyć Base2 :: toString, aby zadowolić IBase? Tak jak mówię, istnieje wiele innych rzeczy, które nie zostały pokazane, więc sugestie dotyczące poważnych zmian w projekcie na tym przykładzie prawdopodobnie nie są pomocne ... chociaż wszelkie ogólne sugestie/porady są mile widziane.
Moja druga myśl była mniej więcej tak:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
To buduje i linki, ale nie mam pojęcia, czy to ma ukryte błędy.