Описание тега static-polymorphism
1
ответ
Альтернативы абстрактному базовому классу для хранения
Я задаюсь вопросом о доступных альтернативах полиморфизму времени выполнения, в частности, альтернативе наличию общего базового класса между моими классами для хранения и взаимодействия с экземплярами производных классов. RTP имеет недостатки, связа…
14 июн '18 в 21:27
2
ответа
Статический полиморфизм и имена методов C++
Когда я использую статический полиморфизм (CRTP), есть ли хороший способ дать полиморфным методам их имена? template <class Derived> struct Base { void interface() { // ... static_cast<Derived*>(this)->implementation(); // ... } stati…
30 ноя '12 в 12:47
2
ответа
C++ - создать корзину для любой лямбды
Я хочу создать несколько экземпляров шаблонной лямбды в одном месте. Количество экземпляров и параметры каждого из них известны во время компиляции, поэтому я предполагаю, что это возможно. Это общая иллюстрация того, что я хочу сделать: enum class …
16 янв '17 в 15:38
1
ответ
Как разделить участника между политиками?
Предположим, у меня есть хост-класс, который содержит член: template<class p1, class p2> struct host : public p1, public p2 { double member; }; и я хочу использовать один и тот же член в p1 и p2: struct p1 { void f1() { host::member+=1;} // th…
12 сен '13 в 06:26
1
ответ
Использование членов объекта до его создания
У меня есть следующий простой код: #include <iostream> #include <vector> template <class Derived> struct Base { Base() { static_cast<Derived*>(this)->foo(); } std::vector<int> m_ints; }; struct Derived : Base<Deri…
27 мар '14 в 08:45
1
ответ
C++: понижение и понижение между производным классом шаблона и базовым классом?
У меня возникли проблемы с преобразованием указателя на шаблонный производный класс в указатель базового класса для целей сохранения на карте (и, очевидно, для его извлечения позже). Я имею: #include <map> //Role.h class RoleBase{}; enum class…
05 ноя '16 в 14:10
1
ответ
Статический полиморфизм CRTP: возможно ли заменить базовый класс на макет?
Я использую статический полиморфизм CRTP на сервере веб-сокетов, чтобы отделить сетевой код от бизнес-логики. Базовый класс вызывает методы для обработки производных сообщений, а производная в свою очередь вызывает базу для отправки / получения. Это…
08 янв '18 в 14:54
2
ответа
Возможна ли эмуляция чистой виртуальной функции в статическом полиморфизме с использованием CRTP?
Я пытаюсь реализовать полиморфизм во время компиляции, используя CRTP, и хочу заставить производный класс реализовать функцию. Текущая реализация такова. template <class Derived> struct base { void f() { static_cast<Derived*>(this)->f…
09 фев '15 в 05:48
0
ответов
Метафункция для выполнения операции приведения к статическим полиморфным типам std::is_convertible limited
Работа с библиотекой с большим количеством интерфейсов и частой сложностью приведения указателей при множественном приведении к наследованию, то есть необходимости в промежуточных приведениях и т. Д. Библиотека является частично метапрограммой, и пр…
21 авг '18 в 17:28
4
ответа
Логический тип Scala не замечает, что эти типы идентичны, какими бы они ни были
У меня здесь есть шаблон проектирования, где есть генератор объектов (MorselGenerator и его дочерние элементы), любой экземпляр которого всегда генерирует один и тот же точный тип объекта (Morsels и его дочерние элементы), но средство проверки типов…
18 фев '12 в 18:15
8
ответов
CRTP и многоуровневое наследование
Мой друг спросил меня, "как использовать CRTP для замены полиморфизма в многоуровневом наследовании". Точнее, в такой ситуации: struct A { void bar() { // do something and then call foo (possibly) in the derived class: foo(); } // possibly non pure …
11 авг '13 в 17:02
2
ответа
Статический полиморфизм: как определить интерфейс?
Ниже приведен очень простой пример того, что я понимаю как статический полиморфизм. Причина, по которой я не использую динамический полиморфизм, состоит в том, что я не хочу препятствовать встраиванию функций PROCESSOR в op, template <class PROCE…
26 апр '15 в 11:24
1
ответ
C++ Полиморфный статический изменяемый указатель на дочернюю функцию
У меня есть класс A, который является потомком класса B, мне нужно, чтобы у всех детей класса B был указатель на функцию для обработки класса, который может быть изменен внешней функцией в другом файле после компиляции классов. Все экземпляры класса…
16 мар '18 в 22:01
1
ответ
Статически оборачивать полиморфный итератор библиотеки, не раскрывая библиотеку пользователю
В настоящее время я интегрирую библиотеку хранилища данных в свое приложение. Мне нужно иметь возможность макетировать это хранилище данных (которое требует интенсивного ввода-вывода) для моих модульных тестов, поэтому создаю оболочку вокруг интерфе…
26 июл '17 в 01:33
5
ответов
Есть ли настоящий статический полиморфизм в C++?
Вот простой код на C++: #include <iostream> #include <typeinfo> template<typename T> void function() { std::cout << typeid(T).name() << std::endl; } int main() { function<int>(); function<double>(); return 0…
26 дек '13 в 08:20
0
ответов
Какая комбинация инструментов повышения позволяет использовать абстрактный шаблон фабричного дизайна?
Из того, что я понимаю, комбинация boost:: function, boost:: factory и std:: map позволяет создавать фабрику объектов. http://www.boost.org/doc/libs/1_49_0/libs/functional/factory/doc/html/index.html Loki есть абстрактная фабрика, но по какой-то при…
25 фев '12 в 23:04
1
ответ
Выбор базового класса CRTP для наследования
Допустим, у меня есть следующий очень простой базовый класс CRTP: template< class D, class T > struct Base { T foo() { return static_cast< D* >(this)->foo_i(); } }; А также, несколько производных классов. Все работает хорошо, но есть …
03 фев '13 в 10:30
1
ответ
C++ самостоятельно добавляет статически-полиморфный класс в список подклассов constexpr
У меня есть большое количество подклассов, которые подписываются на различные события, такие как инициализация и удаление сущностей. В настоящее время я решаю это, делая class A{ static void init(); void kill(ID); } class B{ static void init(); void…
06 май '18 в 23:08
1
ответ
Любопытно повторяющийся шаблон и виртуальное наследование
Я использую любопытно повторяющийся шаблон для моделирования статического полиморфизма. Это работает абсолютно нормально, пока не представишь virtual inheritance (для решения diamond problem). Затем компилятор (Visual Studio 2013) начинает жаловатьс…
30 май '14 в 11:54
2
ответа
Статический полиморфизм для выбора метода и объекта в C++
Попытка получить метод времени компиляции и выбор объекта без базового класса и виртуальных вызовов. Вот случай: struct A { void f1()const { cout << "A::f1" << endl;} void f2()const { cout << "A::f2" << endl;} }; struct B { v…
01 ноя '16 в 12:09