Члены класса, которые не зависят от параметров класса шаблона, должны быть определены в отдельном базовом классе
Члены класса, которые не зависят от параметров класса шаблона, должны быть определены в отдельном базовом классе.
Для доступа к представителю класса шаблона необходимо создать экземпляр шаблона. Если представитель не зависит от параметра шаблона, этот шаг создания экземпляра не требуется. Например, представители anotherMember
и someotherMember
этого класса шаблона aClass
не зависят от параметра T
:
template <typename T> class aClass { T aMember int anotherMember; int someotherMember }
aClass
. Чтобы избежать ненужных экземпляров шаблона, не включать этих представителей в объявление шаблона.Включение этого представителя в объявление шаблона также вызывает ненужное пятно кода. Компиляторы генерируют отдельную копию класса шаблона для каждого экземпляра шаблона. Если член класса не зависит от параметра шаблона, для каждого экземпляра шаблона создается идентичная копия этого представителя.
Чекер помечает представителей данных классов шаблонов, которые не зависят от параметров шаблона. Шашка не помечает представителя функции.
Если эта проверка пометила несколько представителей данных шаблона, создайте базовый класс для шаблона, который агрегирует эти представители данных.
В некоторых случаях вы, возможно, не хотите строго придерживаться этого правила. Например, если только один представитель класса шаблона не зависит от параметра шаблона, можно не создавать отдельный базовый класс для этого представителя. Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Шаблоны |
Категория: Консультационная, частично автоматизированная |