c ++指针(到一个数组)里面的一个类对象初始化

时间:2013-01-26 06:27:16

标签: c++ arrays class pointers struct

假设我有一个包含一些结构数组的类,以及一个指向该数组的指针。

struct Box {
    //stuff
};
class Foo {
    private:
        Box *boxPtr     //pointer to an array of Box structs
        int max;        //the size of the partially filled array
        int boxCounter; //the current number of non-NULL elements in the array
    public:
        Foo();                //constructor
        Foo(const Foo &obj);  //copy constructor
        ~Foo();               //destructor
        bool newBoxInsert(Box newBox){
            //adds another Box to my array of Box structs
            boxCounter++;
        }
        //etc
};

在我的int main()中,我不得不创建一个Foo类的全新对象。 我将需要部分填充不确定大小的数组,其指针是boxPtr。

我如何初始化该数组?构造函数应该这样做吗?或者我应该让newBoxInsert处理它吗?

在任何一种情况下,我将如何实现这一目标?我猜我必须动态分配数组。如果是这种情况,那么将指针作为类成员是好的......对吗?

例如,在将第一个元素添加到我的数组时,我应该使用

boxCounter = 1;
boxPtr = new Box[boxCounter]; 

然后继续继续向数组添加元素?

也许用矢量做得更好。在添加元素时,它们更加灵活(?)。向量是否可以包含结构作为元素?

[/的n00b]

1 个答案:

答案 0 :(得分:2)

private:
        Box *boxPtr 

将其替换为:

private:
        std::vector<Box> mbox;

它可以节省您所有的手动内存管理。而且你不太可能出错 是的,std::vector可以包含结构作为元素。实际上它是一个模板类,因此它可以存储您想要的任何数据类型。

在C ++中如果需要动态数组,最简单,最明显的选择是std::vector