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