概述
1. 模板类的声明和定义均写在.h内
2. 类格式
template<typename T>
class 类名 {
};
3. 成员(变量, 方法)格式
template<typename T>
类名<T>::方法名(){
}
示例
-
定义
#ifndef THREAD_SAFE_STRING_H_ #define THREAD_SAFE_STRING_H_ #include <string> using namespace std; template<typename LOCKER> class ThreadSafeString : public string { public: ThreadSafeString(const char *data); ~ThreadSafeString(); public: int length(); void setString(const char *data); string getString(); private: string m_string; LOCKER m_locker; int iNum; }; template<typename LOCKER> ThreadSafeString<LOCKER>::ThreadSafeString(const char *data) : m_string(data) { iNum = m_string.length(); } template<typename LOCKER> ThreadSafeString<LOCKER>::~ThreadSafeString() { } template<typename LOCKER> int ThreadSafeString<LOCKER>::length() { m_locker.lock(); int len = m_string.length(); m_locker.unlock(); return len; } template<typename LOCKER> void ThreadSafeString<LOCKER>::setString(const char *data) { m_locker.lock(); m_string = data; m_locker.unlock(); } template<typename LOCKER> string ThreadSafeString<LOCKER>::getString() { m_locker.lock(); auto tmpStr = m_string; m_locker.unlock(); return tmpStr; } #endif//THREAD_SAFE_STRING_H_
-
使用
//myLocker ThreadSafeString<myLocker> safeString("hello world!"); safeString.length(); .........