crtp

    7熱度

    1回答

    在VC++ 10中,以下示例因錯誤C2027失敗:「使用未定義類型'X'」。然而g ++ 4.6編譯它就好了。 template<class T> class C { static const size_t size = sizeof(T); }; class X : public C<X> { }; 那麼哪一個是對的?我如何做到這一點,以便它可以在主流編譯器上運行? 雖然

    2熱度

    2回答

    檢測非虛覆蓋我要檢測一個功能是(靜態)覆蓋在派生類中: template< typename T > struct A{ void func(){ static_cast<T*>(this)->func(); } }; struct B: A<B>{}; struct C: A<C>{ void func(){ std::cout << "class C" << std::endl; };

    1熱度

    2回答

    我在C#項目中使用curiously recurring template pattern(CRTP),但我遇到了一些問題。代碼從上面的鏈接中刪除: public abstract class Base<T> where T : Base<T>{ public T FluentMethod() { return (T)(this); } } public cl

    3熱度

    1回答

    總想法:一對類,一個創建工人的經理。每個接受一組自定義行爲的策略。每個策略都有一個影響管理者(做一些設置)的部分和一個影響工作者的部分(添加需要調用的特定工作功能,並且可以從主工作者類中的功能調用 - 目前通過CRTP完成) 工作人員使用的政策將始終反映經理的政策。即manager<foo,bar>將創建worker<foo_worker,bar_worker>類型的工人。正因爲如此,我想將工作者

    1熱度

    1回答

    我有一個基於CRTP,包裝爲Windows HANDLE: #include <windows.h> template<class T> class HandleT { HANDLE handle; operator HANDLE() const { return this->handle; } static ULONG WaitForMultipleOb

    0熱度

    2回答

    您好CRTP相關的編譯器錯誤, 同時使基於CRTP,通用包裝調用任意庫函數,我遇到一個問題,我理解有困難。下面是一個非常簡化的代碼來說明問題: #include <iostream> template< typename PValue, typename PDerived > class TBase { private: typedef TBase TSelf_; t

    3熱度

    1回答

    由於許多學生與我共同工作的代碼有一些問題理解正確的流運算符重載,我試圖創建一個輔助模板(不知道這是否是一個真正的混合)來促進代碼並確保操作者的正確實施。這裏說到: template<typename T> struct IoEnabled { friend std::ostream& operator<<(std::ostream& out, T const& val) { r

    6熱度

    1回答

    我有這個難題,我正努力解決,從根本上把它歸結爲下面的例子: template <typename CT> struct A { typedef typename CT::VALUE_T FOO; // FOO is dependent on CT }; template <typename CT> struct B { typedef typename CT::B

    2熱度

    1回答

    我嘗試使用CRTP有小的變化。我有一個派生類模板,並希望將其應用於多個基類。但是,這要麼不可能,要麼我無法正確理解語法。下面的代碼不能編譯,但希望能夠說明我想實現的目標: template <class Derived> struct BaseCats { /* ... */ }; template <class Derived> struct BaseDogs { /* ... */ };

    1熱度

    3回答

    最近我一直在模板附近玩耍,偶然遇到以下問題。我採取這樣的CRTP模式: template<typename derived_t> struct protocol_object { ... }; struct data_object : public protocol_object<data_object> { ... }; 我現在想在一個成員函數模板匹配cla