当前位置: 首页 > 编程笔记 >

C++模板类的用法

魏岳
2023-03-14
本文向大家介绍C++模板类的用法,包括了C++模板类的用法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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++程序设计有所帮助。

 类似资料:
  • 在C++11之前,类模板和函数模板只能含有固定数量的模板参数。C++11增强了模板功能,允许模板定义中包含0到任意个模板参数,这就是可变参数模板。可变参数模板的加入使得C++11的功能变得更加强大,而由此也带来了许多神奇的用法。 可变参数模板 可变参数模板和普通模板的语义是一样的,只是写法上稍有区别,声明可变参数模板时需要在typename或class后面带上省略号...: template<ty

  • 我是新使用模板。作为标题,我有一个非模板类(Obj和ObjBase)和一个模板类pitem。我想让pItem::RefValue()访问obj中的私有成员。 我想下面的行得通: 它不: 错误C2248:“obj::GetValue”:无法访问类“obj”中声明的私有成员 注意:请参阅对正在编译的函数模板实例化“int PItem::GetValue(void)”的引用 编译器投诉:

  • 模板是泛型编程的基础,它涉及以独立于任何特定类型的方式编写代码。 模板是用于创建泛型类或函数的蓝图或公式。 像迭代器和算法这样的库容器是通用编程的示例,并且是使用模板概念开发的。 每个容器都有一个定义,例如vector ,但我们可以定义许多不同类型的向量,例如vector 《int》或vector 《string》 。 您可以使用模板来定义函数和类,让我们看看它们是如何工作的 - 功能模板 此处显

  • 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。 每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>。 您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。 函数模板 模

  • 本文向大家介绍C++函数模板与类模板实例解析,包括了C++函数模板与类模板实例解析的使用技巧和注意事项,需要的朋友参考一下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛

  • 主要内容:使用类模板创建对象,综合示例C++ 除了支持 函数模板,还支持 类模板(Class Template)。函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。 声明类模板的语法为: template<typename 类型参数1 , typename 类型参数2 , …> class 类名{     //TODO: }; 类模板和函数模板都