2010-08-09 104 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