功能:在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
原文链接: https://www.cnblogs.com/hzijone/p/5416425.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/232263
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!