Использование расширенного пула памяти в классе - PullRequest
1 голос
/ 09 августа 2010

Я пытался объявить пул памяти в моем классе.

Но компилятор показывает некоторую базовую ошибку, например пропущенную ')' перед ';'

или синтаксическая ошибка: 'sizeof'

Это хорошо работает, если я использовал пул в качестве локальной переменной, но я действительно хочу, чтобы он работал с классом.

Что плохого в моем использовании?

Вот класс, MAX_OBJ является константой


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

1 Ответ

7 голосов
/ 09 августа 2010

Я не думаю, что это как-то связано с 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».

Затем вы указываете одному или нескольким конструкторам, как этот элемент инициализируется.

...