gpt4 book ai didi

c++ - 在嵌套类中声明固定长度的数组

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:40 27 4
gpt4 key购买 nike

我有一个类 A,它有一个嵌套的类 B。类 A 将创建类 B 的 n(运行时参数)个实例。

在 A 的构造函数中,在需要在运行时进行计算之后,我计算了一个大小,假设为 s。

现在,每个 B 类都将包含一个大小为 s 的数组。

但是,我不允许使用.cpp 文件,所有工作都必须在头文件中完成。

这意味着,据我所知,我不能使用这些方法(使用 static):

class B {

static const int s;
int a[s];

};

所以,我决定使用 enum,但我无法让它工作(即使使用 C++11 的 enum class)。这个想法是你做这样的事情:

class B {

enum { s = 50 };
int a[s];

};

但我不知道运行时之前的s

当然,我可以使用std::vector动态分配

但是因为:

1)我只需要旧数组的功能(丢弃 vector )

2)在构造B的实例之前,我知道数组的大小(丢弃动态分配)

关于 std::dynarray 讨论如下:

很遗憾,C++14 中没有,但在array TSC++17 中。 Source , 归功于 manlio。

然而,丢弃是一个沉重的词。我的意思是,我听说自动分配速度更快,但动态分配可以让您分配更多空间。此外,与数组相比, vector 在 Release模式下的表现还不错。

最佳答案

即使元素类型相同但大小不同的两个数组也是不同类型。因此,例如 char[10]char[11] 是不同的类型。同样,如果两个类的成员的类型在这两个类之间不同,则这些类定义不同的类型并具有不同的大小(我的意思是运算符 sizeof)。此外,您不得实例化不完整类型的对象。

如果你的编译器支持 std::dynarray 类,我建议使用它。否则你可以使用类 std::vector

关于c++ - 在嵌套类中声明固定长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496273/

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