exponenta event banner

Правило AUTOSAR C++ 14 M10-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()?
      }
  };

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

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

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

Группа: Производные классы
Категория: Консультации, Автоматизированные
Представлен в R2019a