gpt4 book ai didi

c++ - 是否可以使用在构造函数中初始化的成员在头文件中初始化私有(private)数组? C++

转载 作者:行者123 更新时间:2023-11-27 23:17:37 25 4
gpt4 key购买 nike

我想在头文件中声明一个数组,但我希望在构造类时声明数组的大小。这可能吗?我在这个网站上发现了很多数组声明,但不是特别的。当我尝试下面的代码时,我收到错误消息“array bound is not an integer constant before ']' token”

foo.h

class foo{
private:
uint16_t _size;
uint16_t array[_size];
public:
foo(uint16_t size);
virtual ~foo();
}

foo.cpp

#include "foo.h"
foo::foo(uint16_t size)
:_size(size)
{
}

最佳答案

一种特殊的做法是这样

class foo
{
public:
foo(uint16_t size);
private:
uint16_t _size;
uint16_t* array;
};

foo::foo(uint16_t size) :_size(size)
{
array = new int[_size];
}

这将允许您在运行时动态创建一个数组,我建议您使用 std::vector,因为通常它们比 C++(IMO)中的数组好很多,但如果您有特殊原因使用数组多数民众赞成在我会这样做的方式。使用 static 意味着如果您想在其他地方使用该类,那么 _size 将在实例之间共享相同的值,我也不认为这会编译,因为只有静态函数可以访问静态成员。

EDT:在我匆忙回答时我忘了说你应该在你的类中添加一个析构函数来在类超出范围时销毁数组

foo:~foo()
{
delete[] array;
}

因为我从未添加对三规则的引用而被否决。理想情况下,无论如何你都不应该使用动态初始化的数组,而只是使用 vector 这里是三个规则的链接 C++ rule of three

关于c++ - 是否可以使用在构造函数中初始化的成员在头文件中初始化私有(private)数组? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com