Сценарий, создающий это, довольно сложный, поэтому я разберу несколько фрагментов и даю точное представление о соответствующих классах.Вопрос о множественном наследовании C++
/* 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
{
};
Так, это действительно? Будут ли конфликты на toString? Или может Class1 использовать Base2 :: toString для удовлетворения IBase? Как я уже сказал, есть много других вещей, которые не показаны, поэтому предложения по основным изменениям дизайна на этом примере, вероятно, не так полезны ... хотя любые общие предложения/советы приветствуются.
Моя другая мысль была что-то вроде этого:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
Это создает и ссылки, но я понятия не имею, если он скрыт ошибки.