我是靠谱客的博主 高兴马里奥,最近开发中收集的这篇文章主要介绍c++ template 笔记(1) - Policy(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

template policy模式实现

#include <cstdlib>
#include <iostream>
using std::cout;
using std::endl;
template <class T>
struct OpNewCreator
{
static T *Create()
{
return new T;
}
};
template <class T>
struct MallocCreator
{
static T *Create()
{
void *buf = std::malloc(sizeof(T));
if (!buf) return 0;
return new(buf) T;
}
};
template <class T>
struct PrototypeCreator
{
PrototypeCreator(T *pObj = 0)
: pPrototype_(pObj)
{ }
T *Create()
{
return pPrototype_ ? pPrototype_->Clone() : 0;
}
T *GetPrototype()
{
return pPrototype_;
}
void SetPrototype(T *pObj)
{
pPrototype_ = pObj;
}
private:
T *pPrototype_;
};
class Widget
{
};
class Gadget
{
};
// template <class CreationPolicy>
// class WidgetMannager : public CreationPolicy { };
template <template <class Created> class CreationPolicy>
class WidgetMannager : public CreationPolicy<Widget>
{
public:
void Print() { cout << "Widtget Manager" << endl; }
void DoSomething()
{
Gadget *pObj = CreationPolicy<Gadget>().Create();
}
};
int main()
{
typedef WidgetMannager<OpNewCreator> MyWidgetMgr;
MyWidgetMgr mgr;
mgr.Print();
return 0;
}

最后

以上就是高兴马里奥为你收集整理的c++ template 笔记(1) - Policy(一)的全部内容,希望文章能够帮你解决c++ template 笔记(1) - Policy(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部