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