C++在初始化类时设置数组数据成员的大小



我需要创建一个将数组作为数据成员的类。但是,我希望在创建该类的对象时,用户可以选择数组的大小。这不起作用:

class CharacterSequence {
private:
  static int size;
  char sequence[size];
public:
  CharacterSequence(int s) {
    size = s;
  }
};

我该怎么做?

使用std::vector:

class CharacterSequence
{
private:
    std::vector<char> _sequence;
public:
    CharacterSequence(int size) : _sequence(size)
    {
    }
}; // eo class CharacterSequence

你不能。C++不支持可变长度数组。

为什么不使用std::vector<char>?其大小可以在构造时设置

其他人建议使用std::vector。。。但我不认为这是你真正想要的。我想你想要一个模板:

template <int Size>
class CharacterSequence {
private:
  char sequence[Size];
public:
  CharacterSequence() {
  }
};

然后,您可以将其实例化为您想要的任何大小,例如:

CharacterSequence<50> my_sequence;

在运行时确定数组的大小只不过是在运行时分配内存。但数组的大小必须在编译时确定。因此,您不能按照上述方法操作。

或者,您可以创建一个指针并在运行时分配内存,也就是说,当您创建对象时,您可以分配您想要的大小,如下所示:

class CharacterSequence {
private:
  static int size;
  char *sequence;
public:
  CharacterSequence(int s) {
    size = s;
    sequence = new char[size];
  }
  ~CharacterSequence(){
      delete []sequence;
};

最新更新