Все доступные имена сущностей в иерархии множественного наследования должны быть уникальными
Все доступные имена сущностей в иерархии множественного наследования должны быть уникальными.
Средство проверки помечает элементы данных из разных классов с конфликтующими именами, если один и тот же класс является производным от этих классов. Например:
class B1
{
public:
int count;
void foo ( );
};
class B2
{
public:
int count;
void foo ( );
};
class D : public B1, public B2
{
public:
void Bar ( )
{
++B1::count;
B1::foo ( );
}
};
Если доступ к члену данных в производном классе неоднозначен, анализ сообщает об этой проблеме как об ошибке компиляции, а не о нарушении правила кодирования. Например, ошибка компиляции возникает в предыдущем примере, если класс D переписывается как:
class D : public B1, public B2
{
public:
void Bar ( )
{
++count; // Is that B1::count or B2::count?
foo ( ); // Is that B1::foo() or B2::foo()?
}
};Средство проверки не проверяет наличие конфликтов между объектами различных типов, например, функциями-членами с элементами данных.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Производные классы |
| Категория: Обязательно |