(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
類的包裝嘗試:
把檢查與檢查非包裝出來,組合滿足業務需求就比較方便了。
1. 檢查某容器包含0
2. 不滿足時
...
// 檢查容器中元素是否滿足某種條件template <typename T>bool Check(T& container){ if (container.IsSatify()) { return true; } return false;};// 基類:提供檢查接口class CCheckPRoc{public: CCheckProc():m_pParent(nullptr){}; CCheckProc(CCheckProc& proc):m_pParent(&proc){}; virtual bool IsSatify() = 0;protected: CIndexProc* m_pParent;};// 繼承類:提供檢查包含0的接口template <typename T>class CIncludeZero : public CCheckProc{public: CIncludeZero(T& container):m_pContainer(&container) {}; virtual bool IsSatify() { return m_pContainer->contains(0); };private: T* m_pContainer;};// 繼承類:提供檢查非的操作class CNotIn : public CCheckProc{public: CNotIn(CCheckProc& proc):CCheckProc(proc){} virtual bool IsSatify(int nIndex) { return !m_pParent->IsSatify(nIndex); };};// 實例化函數,提供給外部使用bool IncludeZero(QList<int>& indexs ){ return Check(n, CIncludeZero<QList<int>>(indexs));}bool NotIncludedZero(QList<int>& indexs){ return Check(n, CNotIn(CIncludeZero<QList<int>>(indexs)));}(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
新聞熱點
疑難解答