1

我在设置数组大小时遇到​​问题。在我的代码中,我有:

class Test {
    public:
       ....//Functions
    private:
      string name[];
};

Test() {
   //heres where i want to declare the size of the array
}

这可能吗?

4

2 回答 2

6

不,但是您可以使用字符串向量代替:

private:
  std::vector<std::string> name;

然后在你的构造函数中:

Test()
    : name(sizeOfTheArray)
{
}

向量将根据您指定的字符串数调整大小。这意味着字符串的所有内存将立即分配。您可以根据需要更改数组的大小,但没有什么说您必须这样做。因此,您可以获得使用动态分配的数组的所有好处,然后获得一些好处,而没有缺点。

于 2010-02-19T04:12:46.250 回答
2

您将需要使用new.

像这样声明变量:

private:
    string* name;

在你的构造函数中这样做:

int size = ...
name = new string[size];

并像这样释放析构函数中的内存:

delete [] name;
于 2010-02-19T04:12:10.703 回答