时间:2021-05-20
本文实例讲述了C++模板类的用法,分享给大家供大家参考。具体实现方法如下:
main.h头文件如下:
复制代码 代码如下:template <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[ACTION_SIZE];
T m_UndoAction[ACTION_SIZE];
};
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[i] = m_UndoAction[i+1];
}
}
m_UndoAction[m_nUndoPos++] = value;
}
template<class T>
T actioncontainer<T>::redo()
{
//将恢复动作复制到撤销数组中
m_UndoAction[m_nUndoPos++] = m_RedoAction[--m_nRedoPos];
//返回恢复的动作
return m_RedoAction[m_nRedoPos];
}
template<class T>
T actioncontainer<T>::undo()
{
m_RedoAction[m_nRedoPos++] = m_UndoAction[--m_nUndoPos];
return m_UndoAction[m_nUndoPos];
}
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;
}
希望本文所述对大家的C++程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C++中模板类的用法,分享给大家供大家参考。具体方法如下://#include"StdAfx.h#ifndef__AFXTLS_H__#defin
本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下:泛型编程(GenericProgramm
相信学习C++的人对class这个关键字都非常明白,class用于定义类。在模板引入c++后,最初定义模板的方法为:template......在这里class
c++vector用法C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实
本文实例展示了C++中的vector用法,分享给大家供大家参考。具体如下:一、概述vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据