【发布时间】:2021-07-18 01:54:06
【问题描述】:
我想要一个包含数组成员的类,但构造函数允许我设置数组成员的大小。
这可行吗?我不需要动态分配,因为一旦创建了类实例,数组就不需要改变大小,只是每个类实例都有不同的大小。
【问题讨论】:
-
一个类有一个大小。时期。如果大小是在运行时确定的,即使确定后是固定的,那也是动态的。无论您在没有动态分配的情况下更改大小,都不是在做您认为正在做的事情,或者是在滥用某种未定义的行为。
-
一旦创建了类实例——我猜你错过了第一步。如果没有某种“动态”大小确定,将如何创建数组?只是数组的创建本身是动态的。数组创建后你做的是你的事,不管你是否想调整它们的大小。
-
所以不可行。你的实际目标是什么?也许我们可以提出替代方案或解决方法。
-
@user4581301 我想要一个带有 lambda 数组的类,用于管理屏幕上的小部件。但是这些小部件可能有不同数量的按钮来触发不同的效果,所以有些可能需要 1 个 lambda,而另一些可能需要 3 或 4 个!但这是针对嵌入式系统的,因此使用 lambda 向量不起作用,因为向量在此环境中不可用..
-
您可以静态分配一个对象,该对象包含一个最大合理大小的数组。如果您知道最多可以有三个或四个随便什么,则分配一个 4 的数组。如果您不知道实际的峰值,您可以猜测或放弃静态分配并使用 @ 制作自己的简单
vector观察RAII的987654321@。您不需要它来调整大小或迭代器以及vector的其余部分,所以这是一项相对简单的工作。