调用模板类的构造函数

Calling constructor of a template class

本文关键字:构造函数 调用      更新时间:2023-10-16

我有一个容器类,它有一个预先分配的缓冲区。我正在调用 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 的构造函数的任何方法。

感谢您的帮助。

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

在您的情况下,在 return 语句之前添加此行:

new (pReturnValue) T;

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

pReturnValue->~T();