我正在尝试创建一个类,该类根据其中一个对象构造函数参数创建一个任意大小的字符串数组。
这里是我到目前为止尝试的对象构造函数的代码:
commandSpec::commandSpec(int numberOfCommands)
{
std::string * commands = new std::string[3][numberOfCommands];
}
我收到一个错误:“numberOfCommands不能出现在常量表达式中”,有人能告诉我在对象中指定数组的正确方法,我不知道执行之前的大小。
谢谢,j
答案 0 :(得分:2)
这应该可以实现为结构和向量,如下所示:
struct command {
std::string first;
std::string second;
std::string third;
};
commandSpec::commandSpec(int numberOfCommands)
{
std::vector<command> commands(numberOfCommands);
}
当然,您应该为command
的成员选择合适的名称。
答案 1 :(得分:1)
只有在堆上分配时才允许使用可变长度数组。
您需要分两步分配数组 - 首先分配长度为3
的数组(来自指针),然后遍历3个元素并为每个元素分配新字符串。
我建议你改用std::vector
。
答案 2 :(得分:0)
反转尺寸的顺序......
commandSpec::commandSpec(int numberOfCommands)
{
std::string (*commands)[3] = new std::string[numberOfCommands][3];
}
但是,我强烈建议您考虑使用向量。
答案 3 :(得分:0)
我会使用std :: vector代替,让生活更轻松:
commandSpec::commandSpec(int numberOfCommands)
{
std::vector<std::vector<std::string>> mystrings(numberOfCommands);
}