构造函数的初始化列表中的数组

时间:2012-08-04 22:04:32

标签: c++ arrays constructor initialization initialization-list

我正在试图弄清楚如何在构造函数的初始化列表中声明一个任意大小的数组。如果这不可能,我该怎么做呢?

例如:

class vectorOfInt
{
public:

private:
    int _size;
    int _vector[];
};

vectorOfInt::vectorOfInt()
    :_size(32),
    _vector(size)
{
}

基本上,我希望将数组_vector初始化为size(在本例中为32)。我怎么做?感谢您的任何意见。

2 个答案:

答案 0 :(得分:4)

使用std::vector

#include <vector>

class vectorOfInt
{
public:

private:
    int _size; // probably you want to remove this, use _vector.size() instead.
    std::vector<int> _vector;
};

vectorOfInt::vectorOfInt()
    :_size(32),
    _vector(size)
{
}

修改:由于您不想使用std::vector,因此您必须自己处理内存。如果你在编译时知道数组的大小,你可以使用内置数组,但我怀疑是这种情况。你必须做类似的事情:

#include <memory>

class vectorOfInt
{
public:

private:
    int _size;
    // If C++11 is not an option, use a raw pointer.
    std::unique_ptr<int[]> _vector;
};

vectorOfInt::vectorOfInt()
    :_size(32),
    _vector(new int[size])
{
}

答案 1 :(得分:1)

你想要的是使用一个向量,然后使用'reserve'关键字。这将为32个元素分配空间,您可以将它们初始化为您想要的任何内容。

#include<vector>
using namespace std;

class vectorOfInt
{
public:

private:
      int _size;
      vector<int> _vector;

vectorOfInt()
{
    _size = 32;
   _vector.reserve(32);

}



};