STL分离编译遇到的问题
来源:互联网 发布:xmind mac怎么安装 编辑:程序博客网 时间:2024/05/16 15:09
在分离编译模板函数时,发现需要在包含类的调用文件中需要添加模板函数的cpp实现文件,目前编译原理还不是很懂。先记下来!
.H
#ifndef _LOCKFREERINGQUEUE_H_
#define _LOCKFREERINGQUEUE_H_
#include <vector>
template<class T>
class CLockFreeRingQueue
{
public:
CLockFreeRingQueue(const size_t &size) : m_iBufferSize(size + 1), m_iReadIndex(0), m_iWriteIndex(0)
{
m_DataVector.resize(m_iBufferSize);
}
bool putData(T* element);
bool getData(T* element);
void showparameters()
{
int m_szie = m_iBufferSize;
int m_read = m_iReadIndex;
int m_write = m_iWriteIndex;
}
private:
size_t m_iReadIndex;
size_t m_iWriteIndex;
size_t m_iBufferSize;
public:
std::vector<T> m_DataVector;
};
#endif
.cpp
#include "stdafx.h"
#include "LockFreeRingQueue.h"
template<class T>
bool CLockFreeRingQueue<T>::putData(T *element)
{
size_t iNextIndex = (m_iWriteIndex + 1) % m_iBufferSize;
if (iNextIndex == m_iReadIndex)
{
return false;
}
else
{
m_DataVector[m_iWriteIndex] = *element;
m_iWriteIndex = iNextIndex;
return true;
}
}
template<class T>
bool CLockFreeRingQueue<T>::getData(T *element)
{
if (m_iReadIndex == m_iWriteIndex)
{
return false;
}
else
{
*element = m_DataVector[m_iReadIndex];
m_iReadIndex = (m_iReadIndex + 1) % m_iBufferSize;
return true;
}
}
如果想使用这个类 ,需要包含.cpp文件才可以使用
- STL分离编译遇到的问题
- 读写分离遇到的问题
- 《模板的分离编译问题》
- 模板的分离编译问题
- 模板的分离编译问题
- 编译遇到的问题
- C++ STL 分离式编译
- 关于模板的分离式编译问题
- 类模版的分离编译问题
- 类模版的分离编译问题
- 关于模板不能分离编译的问题
- STL模板特化遇到的问题
- c++STL中遇到的问题
- 网站编译遇到的问题
- Ogitor 编译遇到的问题
- 最近遇到的编译问题
- linux 编译遇到的问题
- 编译源码遇到的问题
- ListView点击item背景不变色
- C#学习笔记:随机数生成器
- Android每日面试题4
- Android基础总结2 ---- Fragment与Activity
- JS取随机设置color颜色值
- STL分离编译遇到的问题
- JSON
- ts找 H264 I帧的完整性
- JD(3)
- 字符串 格式化 方法
- [linux]监控性能命令
- jsp判断本月有几个周五
- [hackerrank]Weekly Challenges - Week 11
- 滑动解锁 android Canvas自定义控件中硬件加速引起的canvas.clipPath问题