功能:在qtcreator上用模版的方式实现队列数据格式存储多样化。

模版实现的两种方式:

1、模版的实现直接在头文件里声明并定义,别的类通过#include"*.h"进行包含,则可以实现调用该类并实例化。

2、可以在cpp文件里直接定义模版的具体功能,别的类需要调用该类时,只能通过#include"*.cpp"文件, 如果以#include "*.h"方式,则会出错。

#ifndef TEMPLATERQUEUE_H
#define TEMPLATERQUEUE_H #include <QQueue>
#include <QMutex>
#include <QMutexLocker> template<class T>
class TemplateRQueue
{
public:
TemplateRQueue();
bool setQueueData(const T tmp);
bool getQueueData(T *tmp);
int getQueueLength();
bool clearQueue();
private:
QQueue<T> *m_pRQueueData;
bool lockFlag;
QMutex m_mutex; }; template<class T>
TemplateRQueue<T>::TemplateRQueue()
{
m_pRQueueData = new QQueue<T>;
lockFlag = false;
} template<class T>
bool TemplateRQueue<T>::setQueueData(const T tmp)
{
QMutexLocker locker(&m_mutex); if(lockFlag == true)
return false;
else
{
lockFlag = true;
m_pRQueueData->enqueue(tmp);
lockFlag = false;
return true;
} } template<class T>
bool TemplateRQueue<T>::getQueueData(T *tmp)
{
QMutexLocker locker(&m_mutex);
if(lockFlag == true)
return false;
else
{
lockFlag = true;
if(m_pRQueueData->isEmpty())
{
lockFlag = false;
return false;
}
else
{
*tmp = m_pRQueueData->dequeue();
lockFlag = false;
return true;
} } } template<class T>
int TemplateRQueue<T>::getQueueLength()
{
QMutexLocker locker(&m_mutex); if(lockFlag == true)
return false;
else
{
return m_pRQueueData->length();
}
} template<class T>
bool TemplateRQueue<T>::clearQueue()
{
QMutexLocker locker(&m_mutex);
if(lockFlag == true)
return false;
else
{
m_pRQueueData->clear();
return true;
}
} #endif // TEMPLATERQUEUE_H

最新文章

  1. c# 九九乘法表
  2. 抓包工具Wireshark过滤器
  3. Java基本概念(1)什么是Java
  4. rz和sz上传下载文件工具lrzsz
  5. 将一个query后面的参数转为数组
  6. NEWS - InstallShield 2013 SP1发布
  7. Linux驱动开发学习笔记(1):LINUX驱动版本的hello world
  8. 有关PHP的字符串知识
  9. C#简单的加密类
  10. 栈中的push实现
  11. C语言中的volatile
  12. 警惕P2B模式
  13. Unity 制作RPG小地图
  14. 绿色mysql启动脚本
  15. Hadoop部署配置文件
  16. SpringMVC的映射器、适配器、解析器
  17. python 垃圾回收
  18. Django项目中使用Redis
  19. 使用rsync
  20. [ES]elasticsearch章2 ES查询过程解析

热门文章

  1. PHP常用函数备用
  2. 用css3实现各种图标效果(1)
  3. javascript中对象字面量的理解
  4. Yocto开发笔记之《U-boot启动内核流程》(QQ交流群:519230208)
  5. Navicat 的使用(二)
  6. Java数据库——使用元数据分析数据库
  7. JavaWeb学习笔记——开发动态WEB资源(四)打印当前使用的是get方法
  8. Android学习笔记——TableLayout
  9. windows查看占用端口的进程
  10. CodeForces 716A Crazy Computer