C++在构造函数中初始化指针数组

C++在构造函数中初始化指针数组,c++,arrays,pointers,c++11,C++,Arrays,Pointers,C++11,我需要在中定义一个char*数组作为类的属性,并在类的构造函数中使用长度初始化它。例如: Foo.h: class Foo{ public: char * array[1] // declare the array here, syntax unsure Foo(int length); } Foo.cpp: Foo::Foo(int length){ array[length] // set the length of the

我需要在中定义一个char*数组作为类的属性,并在类的构造函数中使用长度初始化它。例如:

Foo.h:

class Foo{
    public:
        char * array[1]    // declare the array here, syntax unsure
        Foo(int length);
}
Foo.cpp:

Foo::Foo(int length){
    array[length]      // set the length of the array here, syntax unsure
}
不确定语法…我只看到了长度为的指针数组的声明。我想知道如何先声明它,然后再设置/重新声明新的长度。

如何使用动态数组 使用一个:

您将构造一个长度为默认构造字符*的容器。您甚至可以使用其中一个有用的构造函数。特别是,如果要定义元素x的长度副本,可以使用:

array(length, x)
然后,你最终可以用推回/安置推回将他们推入

小动作 如果char*在语义上是一个字符串,那么应该使用std::vector

如果类是您描述的最小类,那么您可以简单地使用:

using Foo = std::vector<std::string>;

类型别名不会创建新类型,它只会创建新类型别名。

注意:使用不会创建新类型,而类Foo会创建新类型。这对于重载等非常重要。对于向量,如果要在构造函数中设置长度,我需要先计算其中的长度,我应该调用哪个函数。resizelength或.reservelength?您应该将长度传递给构造函数。@Fenwick设置长度是什么意思?请参阅和的文档。您应该改写will reserve space并最终将其放入句子中。您使用的向量构造函数不仅保留空间,还使用长度元素填充空间。
array(length, x)
using Foo = std::vector<std::string>;