如果字符串数组是成员函数,如何声明它的大小

发布于 2024-08-22 03:04:43 字数 226 浏览 4 评论 0原文

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

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

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

这可能吗?

I have a problem with setting the size of my array. In my code I have:

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

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

Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陈甜 2024-08-29 03:04:43

不。但是您可以使用字符串向量:

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

然后在构造函数中:

Test()
    : name(sizeOfTheArray)
{
}

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

No. But you could use a vector of strings instead:

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

Then in your constructor:

Test()
    : name(sizeOfTheArray)
{
}

The vector will be sized for the number of strings you specify. This means all memory for the strings will be allocated at once. You can change the size of the array as you wish, but there's nothing saying you have to. Thus, you get all the benefits of using a dynamically allocated array, and then some, without the drawbacks.

野の 2024-08-29 03:04:43

您需要使用new为数组动态分配内存。

像这样声明变量:

private:
    string* name;

在构造函数中执行以下操作:

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

并在析构函数中释放内存,如下所示:

delete [] name;

You will need to dynamically allocate memory for the array using new.

Declare the variable like this:

private:
    string* name;

And in your constructor do this:

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

And free the memory in the destructor like this:

delete [] name;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文