我正在尝试创建一个类似于容器 Vector 的向量。
然后声明:
Vector< A> Avector.
在分配内存时,它会给出 A 没有默认构造函数的编译错误。我编写了以下代码来分配内存。
char *pBuffer = (char*) malloc(size*sizeof(T));
T *array;
for(int i = 0; i < size; i++)
{
(array+i) = new(pBuffer + i) T;
}
return array;
T 是一个模板变量。
该错误是由于在放置 new 时我使用了 T 的默认构造函数,而我没有为 A 编写默认构造函数。
我想知道,有没有办法让内存分配不依赖于构造函数签名。