У меня есть эта проблема, что я не знаю, как правильно ее решить.C++ - дизайн ООП - множественное наследование и чистый виртуальный метод
class A : public B, public C
{
virtual void GetSomethingElse()
{
}
}
class B
{
public void GetSomething()
{
GetSomethingElse();
}
virtual void GetSomethingElse() = 0;
}
class C
{
virtual void GetSomethingElse() = 0;
}
В принципе, то, что у меня есть два абстрактных классов B
, C
. Обычно мне просто нужно унаследовать один из них, но в некоторых случаях мне нужны оба.
Как правильно решить эту проблему с помощью метода GetSomethingElse()
, который должен вызываться от B
. Если я наследую только B
, он будет реализован в дочернем. Если только от C
, все еще в порядке. Однако, если я наследую B
и C
, у меня есть «странный» дизайн, который устраняет проблему наследования алмазов, но это совсем не то же самое.
Я не вижу проблемы, наследующей от B и C. Какая у вас проблема, точно? –
Можете ли вы предоставить код, который действительно порождает ошибку, которую вы хотите решить? – Galik