C++在初始化类时设置数组数据成员的大小
C++ Set size of an array data member at initialization of class
我需要创建一个将数组作为数据成员的类。但是,我希望在创建该类的对象时,用户可以选择数组的大小。这不起作用:
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;
};
相关文章:
- 是否可以将结构数组别名为结构成员数组?
- C++:初始化 constexpr 构造函数中的成员数组
- 使用带有参数包的数组的成员数组初始化类
- C++ 在析构函数调用之前删除的动态成员数组
- 错误的值是使用c++从CSV文件数据写入数组
- c++用输入数据创建数组
- 初始化在类类型 #define 中定义的非静态成员数组,不带默认 ctor
- 指向具有不同大小的成员数组的指针
- 用另一个 constexpr 数组对成员数组进行大括号初始化
- 对象成员数组C++默认初始化
- 如何将数据从数组复制到C++特征矩阵或向量
- 如何在构造函数中的类成员数组中分配数组值,而无需使用STD库
- 将类成员数组组合到单个数组时性能下降
- 如何将数据从公共方法添加到同一类中的私有成员数组中?
- 如何在C 中的派生类中分配数据成员数组
- C 集合构建器中类成员数组的2D数组大小
- 如何在 c++ 中从对象数组中获取数据成员数组
- 在VS2012上将数据成员数组元素初始化为零
- 如何在所示代码中对类的两个数据成员数组进行排序
- 非静态数据成员(数组)的使用无效