Вопросы по теме 'crtp'

Как написать любопытно повторяющиеся шаблоны с более чем двумя уровнями наследования?
Весь материал, который я прочитал о шаблоне «Любопытно повторяющийся шаблон», похоже, относится к одному уровню наследования, то есть Base и Derived : Base<Derived> . Что, если я захочу сделать еще один шаг? #include <iostream>...
2314 просмотров
schedule 22.11.2023

Проблема рефакторинга любопытно повторяющегося шаблона шаблона
Следующий код не компилируется на g++ 4.6.1: template<class Base> struct GetBase { Base * getBase() { return static_cast<Base *>(this); } }; template<class Derived> struct Parent : private GetBase<Derived> {...
682 просмотров
schedule 28.04.2022

CRTP: проблема, зависящая от компилятора, с шаблоном выражения
Я столкнулся с проблемой, зависящей от компилятора, со следующим кодом (хранящимся в crtp.cc): #include <vector> #include <cassert> #include <iostream> template < class Derived > class AlgebraicVectorExpression { public:...
450 просмотров
schedule 05.03.2023

Реализация шаблона C++ и CRTP и дилемма компилятора
Я пытаюсь скомпилировать следующий фрагмент кода, однако, похоже, есть проблема, которую я не могу решить: template <int x> struct count_x { enum { x_size = x }; }; template <typename y> struct crtp_base { typedef typename...
558 просмотров
schedule 04.04.2023

Идиома рекурсивного шаблона, как избежать того, чтобы базовый класс был другом дочерних классов
Я использую идиому рекурсивного шаблона для автоматической регистрации всех дочерних элементов базовый класс на фабрике. Однако в моем дизайне дочерний класс должен иметь в качестве друга базовый класс. Поскольку конструктор моего базового класса...
342 просмотров
schedule 17.06.2023

Использование объявления для имени шаблона, зависящего от типа
Когда CRTP используется внутри шаблона (или вообще когда параметр шаблона передается в качестве аргумента шаблона базового класса), невозможно ли назвать шаблоны членов базы в объявлении using ? template< typename d > struct base {...
2536 просмотров
schedule 29.07.2022

Как определить общую шаблонную функцию создания для подкласса
Я работаю над игрой cocos2dx, где для каждого подкласса/сцены мне нужно определить что-то (макрос), подобное этому CREATECOCOS2DSCENE(CustomSceneNameScreen);` со следующим определением #define CREATECOCOS2DSCENE(T)\ \ static cocos2d::CCScene *...
196 просмотров
schedule 26.05.2023

Любопытно повторяющийся шаблон шаблона и статика в базовом классе
Итак, благодаря этому ответу Я ищу реализацию своей проблемы с CRTP. Однако у меня проблема. В моем статическом базовом классе у меня есть 2 набора функций. Один берет std :: vectors, а другой - стандартный массив в стиле C. Итак, в базовом...
279 просмотров
schedule 12.05.2022

Как получить из вложенного класса вариативный аргумент шаблона?
Учитывая следующие две структуры, можно получить оба вложенных класса «Вложенные» и вызвать foo() и bar() из производного объекта: struct WithNested1 { template<class T> struct Nested { void foo(); }; }; struct WithNested2...
718 просмотров
schedule 30.05.2022

Альтернатива разработки для доступа к члену производного класса из указателя базового класса
Я пишу библиотеку DAL/ORM. Доступ к этой библиотеке будет осуществляться в основном из графических интерфейсов, но также и из некоторых приложений «бизнес-уровня». Я все еще нахожусь на этапе проектирования этой библиотеки и дошел до того, что не...
145 просмотров

любопытно повторяющийся шаблон шаблона и виртуальное наследование
Я использую странно повторяющийся шаблон шаблона для моделирования статического полиморфизма . Это работает абсолютно нормально, пока не вводится virtual inheritance (для обращения к diamond problem ). Затем компилятор (Visual Studio 2013)...
509 просмотров

Любопытно повторяющийся шаблон шаблона с ptrhead
Поэтому я пытаюсь выяснить, можете ли вы использовать любопытно повторяющийся шаблон шаблона, чтобы обойти ограничения использования pthread с методами класса и даже созданием класса, выполнив что-то вроде. template <class T> class...
111 просмотров
schedule 20.12.2022

Альтернатива конструктору преобразования для параметра шаблона
Я использую GLFW для управления окнами и вводом в приложении C++. Чтобы использовать функцию-член в качестве обратного вызова для ключевых событий, я использовал синглтон, как это было предложено в ответе здесь . Однако мне нужно реализовать...
181 просмотров
schedule 14.11.2022

Использование typedef производного класса, не являющегося шаблоном, в базовом классе при использовании CRTP
Я использую шаблон CRT и хочу, чтобы базовый класс видел typedef s из производного класса. В этом сообщении @James McNellis предложил сделайте это, используя класс base_traits , и он отлично работает. Но в случае, описанном в этом посте, сам...
498 просмотров
schedule 14.06.2022

Упрощение проектирования выходного класса потока данных на основе C++ CRTP
Справочная информация Я работаю над шаблоном проектирования, подобным потоку данных. Представленные ниже классы предназначены для представления механизма диспетчеризации выходных данных. level1 — это базовый класс CRTP....
169 просмотров
schedule 06.05.2023

CRTC без конструктора по умолчанию
У меня возникли проблемы с выяснением, является ли это проблемой с моим компилятором: class A { public: A(int i) {} }; template <typename T> class B : public A { public: B(int i) : A(i) {} T test() {return T(10);} }; class C :...
97 просмотров
schedule 15.02.2023

Любопытно повторяющийся шаблон шаблона (CRTP) со статическим constexpr в Clang
Рассмотрим мой простой пример ниже: #include <iostream> template <typename T> class Base { public: static constexpr int y = T::x; }; class Derived : public Base<Derived> { public: static constexpr int x = 5; }; int...
563 просмотров
schedule 17.04.2023

Почему неправильно преобразовывать базовый класс для любопытного шаблона шаблона в другой базовый класс напрямую?
Я изучаю любопытный шаблон шаблона (шаблон crpt). Я хотел бы уменьшить дублированный код в классе с шаблоном crtp. Пункты следующего примера класс C поддерживает контейнеры, класс Container‹(int)> и Container‹(double)> класс C...
76 просмотров
schedule 16.11.2022

В чисто виртуальных вызовах не допускайте переполнения шаблона CRTP
Рассмотрим следующий стандартный пример CRTP: #include<iostream> template<class Derived> struct Base { void f() { static_cast<Derived *>(this)->f(); } void g() { static_cast<Derived *>(this)->g(); } };...
20 просмотров
schedule 17.03.2023

Использование внутреннего класса с CRTP
Есть ли возможность использовать внутренний класс или перечисление с CRTP? Бывший. template<typename Container> struct ContainerBase { std::map<typename Container::Enum, int> _; }; struct ConcreteContainer :...
391 просмотров
schedule 27.12.2022