#pragma once
#include "basegametype.h"
#include #include "log/log.h"
#include "serialize/stream.h"
#include "gamedefine.h"
#pragma pack(push,1)
template struct staticvector
~staticvector(){}
tint32 getsize() const //獲取容器的總容量
tint32 getlen() const //獲取資料的長度
void add(t &data)
m_vecdata[m_veclen++] = data;
} t* getdatahead() //獲取首位址
t& getdata(tuint32 nindex) //獲取指定位置資料
return (t&)m_vecdata[nindex];
} void setdata(tuint32 nindex, t& data)
m_vecdata[nindex] = data;
} t& operator (tuint32 nindex) const
return (t&)m_vecdata[nindex];
} void clear()
void serialize( stream& stream ) }
bool deserialize( stream& stream )
return true;
}protected:
t m_vecdata[n];
tuint32 m_veclen;
};#pragma pack(pop)
至於為什麼要用靜態容器,是因為遊戲開發玩家資料需要用到很多容器,而如果要用記憶體池,就必須提前知道玩家的最大記憶體消耗申請記憶體。
void log::writecriticalerror(const char *pszparam, ...)
void log::printconsole(const char *pszparam, ...)
void log::writelog(enlogtype logtype, const char *pszparam, ...)
m_waitevent.setevent();
}
比如,我們要封裝乙個自己的寫log函式,就需要動態引數。
參考資料
c++ 模板
c++學習之可變引數的函式與模板
模板引數和模板的模板引數實現棧和佇列
include using namespace std 利用順序表實現棧 if 0 template class stack stack const t arr,size t sz ptr new t sz capacity sz size sz 元素入棧 void push t data 元素出棧...
仿函式和模版的模板引數
型別萃取被整理到stl迭代器剖析裡賣了!在那裡面說的更清楚!模版的模板引數主要使用在類的類成員也是個模板類,當你想只輸入乙個模板引數,就可以同時對類內的其他類成員傳入相同的模板引數的時候就可以使用咯 1 include2 3 using namespace std 4 5 6 7 template8...
仿函式和模版的模板引數
型別萃取被整理到stl迭代器剖析裡賣了!在那裡面說的更清楚!模版的模板引數主要使用在類的類成員也是個模板類,當你想只輸入乙個模板引數,就可以同時對類內的其他類成員傳入相同的模板引數的時候就可以使用咯 1 include2 3 using namespacestd 4 5 6 7 template8 ...