Предположим, у меня есть:Как я должен обрабатывать конфликт с множественным наследованием типов, а не методов?
class A { public: using foo_t = int; }
class B { public: using foo_t = int; }
class C : public A, public B { }
Я хочу обратиться к C::foo_t
. Да, это должно быть C::foo_t
, а не C::A::foo_t
или C::B::foo_t
. Очевидно, компилятор жалуется на двусмысленность. Если бы это были методы, я мог бы использовать виртуальное наследование и, возможно, mixin, чтобы сформировать алмаз, а что - нет. Но что мне делать для типов? Должен ли я просто вручную добавить инструкцию?
Примечание:
- Вы можете предположить, что я статический утверждать оба foo_t являются одинаковыми.
Почему не 'с помощью foo_t = A :: foo_t'? – skypjack
Где ваше наследование бриллиантов? Я могу видеть только множественное наследование, C наследуется от A и B. – Janosimas
[Наследование бриллиантов] (https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem) возможно только по меньшей мере с 4 классами. – Drop