Хорошая ли идея использовать std::initializer_list в полиморфном классе?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Хорошая ли идея использовать std::initializer_list в полиморфном классе?

Сообщение Гость »


Я застрял в этой ситуации.

В C++ кажется, что функция-член не может быть шаблоном функции (Изменение: функция-член может быть шаблоном функции; виртуальная функция не может быть шаблоном функции!).
>
И именно поэтому я не могу написать абстрактный метод с вариативным шаблоном.

Недопустимый пример показан ниже:

Базовый класс { публика: виртуальный ~Base() {}; // Неверный! Пересмотр: мне не следует брать init в качестве примера. Поэтому я добавил foo, как показано ниже. шаблон виртуальная пустота init (Ts... args) = 0; // Неверный! шаблон виртуальная пустота foo(Ts... args) = 0; } Однако мне нужно написать абстрактный метод, чтобы, если я получаю указатель Base (или ref), когда я вызываю init()(Исправить: мне не следует брать init в качестве примера, поэтому я добавил еще одну функцию foo()), фактически будет вызываться реализация производного класса .

В результате мне на ум приходит std::initializer_list.

Базовый класс { публика: виртуальный ~Base() {}; // Действительный! Пересмотр: мне не следует брать init в качестве примера. Поэтому я добавил foo, как показано ниже. виртуальная пустота init (std::initializer_list initList) = 0; // Действительный! виртуальная пустота foo(std::initializer_list initList) = 0 } Производный класс: публичная база { публика: // Переопределить {foo()} в virtual void foo(std::initializer_list initList) переопределить { // ...... } } Это работает, но я не знаю, хорошая ли это идея. Сделает ли это мою программу очень медленной? Или есть ли другой способ добиться полиморфизма, а также вариативных параметров?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»