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