crtp

    1

    2답변

    종종 CRTP을 사용하여 기본 클래스에서 파생 클래스 함수를 호출합니다. template< class Derived > class Base { public: void foo() { static_cast<Derived*>(this)->foo_impl(); // Non virtual derived class call

    1

    1답변

    일부 매개 변수를 흥미로운 반복 템플릿 패턴에 전달하고 싶습니다. 그런 다음이 기본 클래스가 다른 객체를 만들고 두 유형 모두를 하위 클래스로 전달하려고합니다. 이렇게하면 하위 클래스가 호출되기 전에 기본 클래스를 일반화하여 일반 논리를 수행 할 수 있습니다. 각 서브 클래스는 하나의 레벨 계층 구조의 특수 인스턴스가 될 수 있어야합니다. 여기

    4

    2답변

    "다이아몬드"가 발생할 수있는 노드 계층이 있습니다. 모든 노드는 복제 가능해야하지만 모든 노드에 복제 방법을 쓰고 싶지는 않습니다. 그래서 나는 CRTP를 사용한다. class Node { public: Node(){} Node(Fill*) { } virtual ~Node() {} virtual Node * clo

    1

    2답변

    에/액션 승 나는 클래스 참조는 다음과 같이 보이는 계산하게하는 믹스 인 클래스가 믹서의 소멸자에 도달했을 때 program이 더 이상 존재하지 않으므로 파생 클래스에서 last_ref_released을 호출 할 수 없지만이를 수행하는 비슷한 방법이 있습니다 (파생 클래스에 노이즈를 추가하지 않는 것이 좋습니다) ? 편집 : 대신 program의 share

    1

    1답변

    구성되어 : #include <iostream> #include <vector> template <class Derived> struct Base { Base() { static_cast<Derived*>(this)->foo(); } std::vector<int> m_ints; }; struct

    2

    1답변

    에서 기본 클래스에 템플릿하려면 어떻게 template<class Derived> class ElectricEngine {}; 및 template <typename Derived> class GasEngine {}; 가 지금 말 (연료 유형, 예를 들면 가스 또는 전기 기준) 두 개의 엔진 클래스를 가지고 말할 수 각각 위의 기본 클래스 중 하나

    0

    2답변

    클래스를 생성하여 main()이 시작되기 전에 글로벌 생성자를 생성하고 실행하게하는 기본 CRTP 클래스에서 클래스를 상속 받도록하고 싶습니다. 아이디어는 이것을 나중에 사용하기 위해 어떤 맵에서 타입을 등록하기 위해 사용하는 것입니다. 이것은 실제로 Derived 클래스의 멤버를 인스턴스화하고 Base 클래스를 사용한 경우에만 작동하는 것으로 보입니다.

    1

    2답변

    CRTP에서 도움을 요청할 수 있습니다 (기본 질문 일 수 있습니다. 유감입니다). 이것은 다음과 같은 글을 기반으로합니다 CRTP를 사용 C++ object lifetime profiling How to count the number of CRTP subclasses of a template class? , 우리는 할 수 각 클래스 유형에 대해 만든 개체

    2

    1답변

    CRTP를 사용하고 있으며 기본 클래스에 템플릿 함수가 있습니다. use 템플릿이 파생 된 클래스의 멤버 함수는 어떻게합니까? template <typename T> struct A { int f(); template <typename S> int g(); }; struct B: public A<B> { int h(

    0

    1답변

    포인터를 인터페이스를 사용하지 않고 기이하게 재귀 템플릿으로 만든 기본 클래스를 가리킬 수 있습니까? 예 : template<typename Derived> class Base { public: Base(); virtual ~Base(); void EventA(); void EventB(); void Ev