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

Arrays in the initialization list of a constructor

本文关键字:数组 初始化 构造函数 列表      更新时间:2023-10-16

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

例如:

class vectorOfInt
{
public:
private:
    int _size;
    int _vector[];
};
vectorOfInt::vectorOfInt()
    :_size(32),
    _vector(size)
{
}

基本上,我希望将array_vector初始化为大小(在本例中为32)。我该怎么做?感谢您的意见。

使用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])
{
}

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

#include<vector>
using namespace std;
class vectorOfInt
{
public:
private:
      int _size;
      vector<int> _vector;
vectorOfInt()
{
    _size = 32;
   _vector.reserve(32);
}

};