在我们平时项目中,一定会出现这种情况:大量的操作开始和结束的处理是一致的,比如一些打开显示、关闭消除的操作(如我们在编辑修改一个文件),而在中间要传入不同的实现体,
还比如一些对资源的访问请求、结束时的关闭断开等;还比如对一个界面控件的处理,其它的诸如任务栏、状态栏、进度条、Undo/Redo处理的逻辑大致都是一样的,现在不可能分别的写出每一个操作的函数
那么就要考虑采用一种模板封装的方法如下:
#pragma once
#include <iostream>
namespace zhouyq {
namespace GraphicUtility{
enum GRAPHIC_TYPE
{
GRAPHIC_UNKOWN = -1,
GRAPHIC_CIRCLE = 0,
GRAPHIC_RECTANGLE = 1,
GRAPHIC_TRIANGLE = 2
};
void DrawRectangle();
//实际上和画矩形的差别可能很大,里面的逻辑是不能复用的
//这里仅仅做一个演示,实际相同的部分是封装在模板函数DrawGraphic中的
void DrawTriangle();
template <class Fun>
void DrawGraphic(Fun&& fun, bool showStatusBar);
}
}
#include "stdafx.h"
#include "MyTestForTe