Няколко основни класове

Помислете предишния пример. Тъй като името е член и на двете класове А и В. Компилаторът не може да се определи коя променлива е функция да се нарича. Достъп до член е неясна, ако тя може да се отнася до редица функции, обекти, видове или бройки.

Компилаторът определя неяснотата чрез извършване на тестове в посочения ред.

Ако достъпът до името е неясна (както е описано по-горе), съобщение за грешка е.

Ако претоварен неясни функции, те се уреждат. (За повече информация относно функцията на неопределеност претоварване см. В раздел Сравнение аргумент).

Ако достъпът до името нарушава разрешение за достъп до членовете, съобщение за грешка е. (За повече информация вижте. Как да управляваме Достъп до членове.)

Ако експресията води до неяснота в резултат на наследство, тя може да бъде решен ръчно чрез определяне на името на класа вместо името. За да компилирате предишния пример, без двусмислие, можете да използвате следния код.

Ако могат да се появят, обявени В. грешки, ако обаче грешката не се издава препратката към областта на Б С, ако не се направи позоваване на неквалифициран B в C.

господство

няколко имена можете да постигнете чрез наследяване графика (функция обект или Enumerator). С nonvirtual базови класове такива неясни случаи. Те също така се смесва с виртуални базови класове, ако не доминират другият от имената.

Или, че името доминира от друга страна, ако тя е дефинирана в двата класа и един клас се извлича от друг. Доминиращо име - е името на извлечения клас; Той се използва, когато ще възникне друго двусмислие, както е показано в следващия пример.

двусмислен преобразуване

Явните и скрити указатели преобразуване и препратки към видове клас може да доведе до неяснота. Следващата фигура "Неясни гласове указатели към базови класове", показва следното:

Няколко основни класове

Неясни гласове указатели към базови класове

Смяна на типа A * (указател към А) е неясна, тъй като няма начин да се определи кой тип А под-обект е правилно. Моля, имайте предвид, че неяснота може да се избегне, като се посочва, използван под-обекта, както е показано по-долу: