STL分離編譯遇到的問題

在分離編譯模板函數時,發現需要在包含類的調用文件中需要添加模板函數的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文件纔可以使用


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章