Почему наследование перегрузки константной / неконстантной функции неоднозначно?

Лучше всего знать о нормальных формах, так это то, что они являются гидами и проводниками, которых нельзя упрямо придерживаться. Когда мир академических наук сталкивается с реальным миром, вы редко находите много выживших воинов адемии.

Ответ на этот вопрос заключается в том, что его нормально использовать нули. Просто оцените вашу ситуацию и решите, хотите ли вы, чтобы они отображались в таблице или свернули данные в другую связанную таблицу, если вы считаете, что отношение нулевых значений к фактическим значениям слишком велико.

Как друг любите говорить: «Не позволяйте совершенству быть врагом добра». Подумайте, Вольтер также сказал это. 8) [/ д2]

19
задан Boann 18 January 2019 в 20:35
поделиться

2 ответа

Неопределенность возникает, когда компилятор пытается выяснить, к какому объекту относится имя get, до разрешения перегрузки. Это может быть имя функции из класса A или из класса B. Чтобы составить список перегрузок, компилятору необходимо выбрать только один из классов, из которых нужно извлечь функции. Чтобы исправить это, вы можете перенести это имя из обоих базовых классов в производный класс (и сделать их общедоступными):

class C : public A, public B { public: using A::get; public: using B::get; };
0
ответ дан VTT 18 January 2019 в 20:35
поделиться

Проблема в том, что на самом деле у вас нет одного унифицированного набора перегрузки, в котором изменчивый вариант был бы однозначно лучшим, но два различных набора перегрузки в A и B и компилятор не будет автоматически объединять их.

Положите

using A::get;
using B::get;

в C, чтобы объединить наборы перегрузки и таким образом устранить неоднозначность.

0
ответ дан Deduplicator 18 January 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: