我有一个这样描述的课程:
class Foo {
int size;
int data[0];
public:
Foo(int _size, int* _data) : size(_size) {
for (int i = 0 ; i < size ; i++) {
data[i] = adapt(_data[i]);
}
}
// Other, uninteresting methods
}
我无法更改该课程的设计。
如何创建该类的实例?在调用构造函数之前,我必须让它保留足够的内存来存储它的数据,所以它必须在堆上,而不是在栈上。我想我想要类似的东西
Foo* place = static_cast<Foo*>(malloc(sizeof(int) + sizeof(int) * size));
*place = new Foo(size, data); // I mean : "use the memory allocated in place to do your stuff !"
但我找不到让它工作的方法。
编辑:正如评论员所注意到的,这不是一个很好的整体设计(使用非标准技巧,例如data[0]
),唉,这是一个我被迫使用的库......