Код как для статического, так и для динамического полиморфизма на C++?C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Код как для статического, так и для динамического полиморфизма на C++?

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


Есть ли способ написать следующий код:

IConnection s{Socket{...}}; // статически Соединение* c = новый сокет {...}; //динамически // гетерогенный список, требующий динамической отправки /экзистенциального типа/ стирания типа List l {новый сокет{...} , новый MockSock{...}, новый LocalDataBase{...}, ...} Я пытался реализовать класс, подходящий как для динамического, так и для статического полиморфизма на основе необходимости стирания, то есть использовать динамический полиморфизм только в случае необходимости (например, гетерогенный список). Я пишу следующий код

класс Connection { публика: Соединение& оператор=(Соединение& c) = удалить; Соединение(Соединение& c) = удалить; Connection& оператор=(Соединение&& c) = удалить; Соединение(Соединение&& c) = удалить; виртуальное ~Соединение() = 0; виртуальная строка Recv() = 0; } шаблон класс IConnection: Соединение { публика: встроенная отправка T*(){ вернуть static_cast(это); } переопределение виртуальной строки Recv() { возврат отправки()->Recv(); } ... } Однако, если я реализую class Socket :IConnection, то Recv() в class Socket все равно будет динамическая отправка.
Ответить

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

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

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

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

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