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