policy-based-design

    0熱度

    2回答

    我試圖推廣我的課使用基於策略的設計,似乎gcc沒有看到在基類中實現的純虛函數的實現。這裏有一個例子: #include <iostream> template <typename ReturnValue, template <typename> class... AccessPolicies> struct testInterface : public AccessPolicies<Retu

    2熱度

    2回答

    假設一個算法具有策略FooPolicy。實施此策略的策略類具有靜態成員函數foo,但對於其中的一些,foo需要int參數,而對於其他情況則不需要。我試圖通過constexpr靜態數據成員的手段,以便能夠使用具有不同的接口,這些政策類: struct SimpleFoo { static constexpr bool paramFlag = false; static void

    2熱度

    1回答

    在我的工作中,我有很多循環與許多內部函數調用;性能是至關重要的位置,以及虛函數調用的開銷是不能接受的,所以我嘗試使用CRTP以避免動態的多態性,就像這樣: template<class DType> struct BType { DType& impl(){ return *static_cast<DType*>(this); } void Func(){ impl().Fu

    6熱度

    2回答

    考慮一個基於策略的智能指針類Ptr,只有一個策略會阻止將它解除引用到NULL狀態(以某種方式)。讓我們考慮這樣的2種策略: NotNull NoChecking 由於NotNull政策更嚴格,我們希望允許隱式轉換從Ptr< T, NoChecking >到Ptr< T, NotNull >,而不是相反方向。爲了安全起見,這必須是明確的。請看看下面的實現: #include <iostream>

    1熱度

    2回答

    有沒有辦法創建一個類模板,它可以將自己作爲模板參數進行實例化? 我想可以說在我的代碼的東西這樣的: Operation<float> op1(0.3f); Operation<float, Operation> op2(0.5f, op1); 我試圖定義一個與可變參數模板參數,類模板,以避免在一個無限循環結束了(模板將有定義一個模板模板參數,該模板參數本身也需要一個模板參數,該模板參數也必須

    3熱度

    1回答

    在C++中探索基於策略的設計模式時,我偶然發現了一個我找不到解決方案的問題:如何編寫基於策略的類的複製和移動構造函數方式而不涉及策略類內的成員變量? 下面是一個例子: class Foobase { public: Foobase(int v) :val(v) { } protected: int val; }; template <typename Base> c

    6熱度

    2回答

    在閱讀了一篇關於基於策略的設計的文章並希望自己嘗試一些東西之後,我花了一些時間重新設計一次我曾經做過的記錄器類到基於策略的方法。 一些代碼: template <class Filter, class Formatter, class Outputter> class LoggerImpl : public LoggerBase { public: LoggerIm

    2熱度

    1回答

    命名模板參數可以說是C++中非常重要的一個特性。也就是說,給定一個具有許多具有默認參數的模板參數的類模板,該功能將允許用戶爲這些參數的任意子集提供參數。 Vandervoorde的「C++模板:完整指南」和Josuttis花費整個Section 16.1實現命名模板參數的效果。 Section 13.9同名書目列表命名模板參數作爲可能添加到該語言的功能之一。既然這個估計是12年前的事實,並且這個特

    4熱度

    1回答

    這是question由於過於寬泛而被擱置的較窄版本。 在現代C++設計的6-7頁,安德烈Alexandrescu的列出了三種方式的多重繼承弱於模板關於構建靈活的設計。他特別指出,通過多重繼承提供的力學差(方括號中格式的文本是我按我理解上下文): 在這樣的設置[即多重繼承],[構建靈活的SmartPtr],用戶將通過繼承一些BaseSmartPtr類和兩個類MultiThreaded和RefCoun

    0熱度

    2回答

    我有一些類Builder,它構建了一個Object。我打算用政策對象取代Object的一些膽量,例如可以設置一些容器類型Storage。具體來說,我想使用Builder設置Object的策略對象,如果沒有指定,則回退到某個默認值;從我的頭頂,像這樣: class Builder { public Builder(); // ... builder methods