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