2010-08-09 89 views
1

我試圖在我的課程中聲明一個內存池。在課堂上使用boost內存池

但編譯器顯示一些基本的錯誤,如''''之前';'

或語法錯誤:「的sizeof」

它工作得很好,如果我使用的池局部變量,但我真的希望把它與生活類。

我的用法有什麼問題?

這裏是一流,MAX_OBJ是一個const


class CData 
{ 
public: 
CData(void); 
~CData(void); 
private: 
boost::pool m_Pool(sizeof(DWORD) * MAX_OBJ); 
}; 
+0

編譯器還顯示**錯誤在哪裏。知道這一點也是有用的。 – ereOn 2010-08-09 07:33:26

回答

6

我不認爲這是什麼做boost::pool

,但此行:

boost::pool m_Pool(sizeof(DWORD) * MAX_OBJ); 

也許應該是:

boost::pool m_Pool; 

然後你的構造應該是:

CData::CData() : 
    m_Pool(sizeof(DWORD) * MAX_OBJ) 
{ 
} 

你不能建造成員在類聲明 。你可以說:「我的班級有一個名爲m_Pool的成員,其類型爲boost::pool。」

然後,您可以在一個或多個構造函數中指定如何初始化此成員。

+0

謝謝,我做了一個基本的錯誤...... :( – Judarkness 2010-08-09 07:48:51

+1

@Judarkness:不客氣,我只是浪費了10分鐘在我自己的代碼中找到一個缺少的';',所以我想我們在某個時候都會發生基本錯誤;) – ereOn 2010-08-09 07:52:16