我头疼。以下代码片段是对的吗?我想创建一个包含19个B对象的数组,其中包含另一个X A对象数组。 (X是可变的,我的意思是As数组在B对象之间的长度可能不同)
稍后我想说B_obj[i].As[j].number = 0;
(i = [0-18],j = [0 - 取决于对象])
示例:
class A
{
public:
A();
private:
char *arena;
size_t size;
int number;
};
A::A()
{
size = 5;
arena= (char *) malloc (size);
... some code ...
}
class B
{
private:
int counter;
A* As;
public:
B();
};
B::B()
{
counter = getMyNumber(); /* getMyNumber returns an individual ID */
As= (A*) malloc(counter * sizeof(A)));
}
B B_obj[19];
内存是否正确分配?一切都必须设置,我不允许以后分配额外的内存。
答案 0 :(得分:0)
我想创建一个包含19个B对象的数组,其中包含另一个X A对象数组。
class B {
std::vector<A> x;
public:
// your public interface here
};
B arr[19];
当您使用std::vector
等优质RAII解决方案时,解决方案变得非常简单,因为它可以为您进行内存管理。内存是自动分配的,您可以使用std::vector::reserve
在向量中分配一定数量的A
个对象。