MISRA C++:2008 Rule 10-2-1

Все доступные имена сущности в иерархии наследования кратного должны быть уникальными

Описание

Управляйте определением

Все доступные имена сущности в иерархии наследования кратного должны быть уникальными.

Реализация Polyspace

Средство проверки отмечает элементы данных от различных классов с конфликтными именами, если тот же класс выводит из этих классов. Например:

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()?
      }
  };

Средство проверки не проверяет на конфликты между сущностями различных видов, например, функций членства против элементов данных.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Проверяйте информацию

Группа: производные классы
Категория: необходимый
Введенный в R2013b