调用模板类的构造函数

时间:2013-02-02 08:34:56

标签: c++ templates

我有一个容器类,它有一个预先分配的缓冲区。我正在调用memset()来使用预先分配的内存来创建我的对象。由于我没有使用new,因此不会调用构造函数。

以下是添加功能

的简化版本
 template<typename T>
 T* CContainer<T>::Add()
 {
memset(&m_pBuffer[index],0,index);
T* pReturnValue = reinterpret_cast<T*> ( &m_pBuffer[index] );

return pReturnValue;
 }

以任何方式调用模板类T的构造函数。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

要在现有内存中调用对象的构造函数,请使用placement new

在你的情况下,在return语句之前添加这一行:

new (pReturnValue) T;

要销毁实例,请显式调用析构函数:

pReturnValue->~T();