crtp

    1熱度

    2回答

    我有一個B類繼承自類A,但我不明白爲什麼B類以這種方式聲明。 class B : public A <B> { public: ... }; template <class T> class A { public: .... }

    4熱度

    2回答

    我有一個節點層次結構,其中可能出現「菱形」。 每個節點都必須是可克隆的,但我不想寫克隆的方法每一個節點。所以我使用CRTP。 class Node { public: Node(){} Node(Fill*) { } virtual ~Node() {} virtual Node * clone() const = 0; virtual v

    1熱度

    1回答

    我有以下簡單的代碼: #include <iostream> #include <vector> template <class Derived> struct Base { Base() { static_cast<Derived*>(this)->foo(); } std::vector<int> m_ints; }; st

    0熱度

    2回答

    我正在使用GLFW進行C++應用程序中的窗口和輸入管理。爲了使用成員函數作爲關鍵事件的回調函數,我按照答案here中的建議使用了單例。 但是,我需要實現不同的輸入處理程序。我的方法是使用Singleton作爲實際輸入處理程序(controller_)的包裝以允許多態。但是,爲了實例化Singleton,基類不能是抽象的。該解決方案涉及使用CRTP以便能夠從基類的實現中調用特定的輸入處理方法。 te

    4熱度

    1回答

    我試圖用一個CRTPed基地舉辦一些靜態初始化代碼: template <typename T> class InitCRTP { public: static InitHelper<T> init; }; template <typename T> InitHelper<T> InitCRTP<T>::init; 現在,它需要做的InitHelper<T>工作可以做到這一點任何

    0熱度

    4回答

    我有一個類Base,我有兩個類,DerivedA和DerivedB定義如下。 template <typename Derived> class Base{ public: double interface(){ static_cast<Derived*>(this)->implementation(); } }; class DerivedA : pub

    0熱度

    2回答

    我想允許一個類從一個基類CRTP類繼承,這個類會導致在main()開始之前創建並運行一個全局構造函數。這個想法是使用它來在某個地圖上註冊一個類型以便稍後查找。看來這隻有在我已經實例化Derived類的成員並使用Base類時纔有效。 #include <iostream> class Foo { public: Foo() { std::cout << "Foo" << std::e

    1熱度

    2回答

    我需要你們在CRTP中的幫助(可能是基本問題,對不起)。 這是基於以下職位: C++ object lifetime profiling How to count the number of CRTP subclasses of a template class? 使用CRTP,我們能數爲每個類類型創建對象的數量。但是,使用這種方法我找不到在系統中創建的對象的總數。 有什麼辦法可以達到這個目的嗎?

    2熱度

    1回答

    我正在使用CRTP並且基類具有模板函數。我如何use成員函數在模板派生類? template <typename T> struct A { int f(); template <typename S> int g(); }; struct B: public A<B> { int h() { return f() + g<void>(); } //

    1熱度

    1回答

    有沒有辦法使用CRTP初始化引用? 我的目標是讓喜歡下面的代碼東西合作 #include <iostream> int gI = 1; template <typename Derived> struct A { A() { static_cast<Derived*>(this)->InitRefs(); } void InitIn