Все доступные имена сущности в иерархии наследования кратного должны быть уникальными.
Все доступные имена сущности в иерархии наследования кратного должны быть уникальными.
Средство проверки отмечает элементы данных от различных классов с конфликтными именами, если тот же класс выводит от этих классов. Например:
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()?
}
};Средство проверки не проверяет на конфликты между сущностями различных видов, например, функций членства против элементов данных.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
| Группа: производные классы |