【发布时间】:2021-03-16 08:40:46
【问题描述】:
我有一个 typedef 结构,其中包含一个大小不同的数组,取决于运行应用程序时的大小。 应用程序应读取大小,然后创建一个具有其特定数组大小的结构。 这是我要使用的结构。
template <int N>
typedef struct Frame{
float time;
float zone_values[N];
}Frame;
我的问题是如何在主函数中调用它?
【问题讨论】:
-
这可以编译吗? typedef 实际上不是必需的。只需将
struct Frame {...};与模板一起使用即可。 -
您必须使用动态分配。除非您想使用不同的类型,否则模板不是正确的工具。
-
使用
std::vector会更好方式。这是运行时变量还是编译时常量?如果是前者,则无法在常规 C++ 中执行此操作。你需要一个容器。如果是后者,那么您可以这样做,但可能不想这样做。 -
请注意,您不需要
typedef- 只需将其删除(以及struct之后的Frame)。 -
模板是一种编译时机制,因此必须在编译时指定模板中的值
N。如果您希望读取N(例如从文件中),那么您需要允许在运行时指定大小的东西。一种选择是std::vector<float>,它可以根据需要动态调整大小(例如,基于运行时读取的值)。
标签: c++