模板类的使用
main.htemplate <class T>
class actioncontainer
{
public:
//构造函数
actioncontainer()
{
m_nRedoPos = 0;
m_nUndoPos = 0;
}
//容器的接口函数
void add(T value);
T redo();
T undo();
//容器的属性
private:
int m_nRedoPos;
int m_nUndoPos;
const static int ACTION_SIZE=5;
T m_RedoAction;
T m_UndoAction;
};
template<class T>
void actioncontainer<T>::add(T value)
{
if (m_nUndoPos >= ACTION_SIZE)
{
//如果容器已潢,刚调整添加位置
m_nUndoPos = ACTION_SIZE - 1;
for(int i = 0; i < ACTION_SIZE; i++)
{
m_UndoAction = m_UndoAction;
}
}
m_UndoAction = value;
}
template<class T>
T actioncontainer<T>::redo()
{
//将恢复动作复制到撤销数组中
m_UndoAction = m_RedoAction[--m_nRedoPos];
//返回恢复的动作
return m_RedoAction;
}
template<class T>
T actioncontainer<T>::undo()
{
m_RedoAction = m_UndoAction[--m_nUndoPos];
return m_UndoAction;
}
main.cpp
// test_iostream.cpp : 定义控制台应用程序的入口点。
//
#include "StdAfx.h"
#include "main.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
actioncontainer<int> intaction;
//向容器中加动作
intaction.add(1);
intaction.add(2);
intaction.add(3);
intaction.add(4);
//撤销上一步动作
int nUndo = intaction.undo();
nUndo = intaction.undo();
//恢复
int nRedo = intaction.redo();
return 0;
}
页:
[1]