C++在构造函数中初始化指针数组
我需要在中定义一个char*数组作为类的属性,并在类的构造函数中使用长度初始化它。例如: Foo.h: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
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>;