我有一个 typedef 结构,它包含一个不同大小的数组,取决于运行应用程序。应用程序应该读取大小,然后创建一个具有数组特定大小的结构。这是我想使用它的结构。
template <int N>
typedef struct Frame{
float time;
float zone_values[N];
}Frame;
我的问题是如何在主函数中调用它?
您的结构具有无法在运行时确定的非类型模板(请参阅https://en.cppreference.com/w/cpp/language/template_parameters),您应该改用 Sparkofska 提供的答案。如果你仍然想使用编译时版本,你可以用 C++17 这样做
#include <array>
#include <cstddef>
template<std::size_t N>
struct Frame {
float time;
std::array<float, N> zoneValues;
};
int main() {
auto frame = Frame<3>{0.0f, std::array{1.0F, 2.0F, 3.0F}};
}
使用 C++20 你也可以做
auto frame = Frame{0.0f, std::array{1.0F, 2.0F, 3.0F}};
或者像这样在 c++17 中添加推导指南
#include <array>
#include <cstddef>
template<std::size_t N>
struct Frame {
float time;
std::array<float, N> zoneValues;
};
template<std::size_t N>
Frame(float, std::array<float, N>)->Frame<N>;
int main() {
auto frame = Frame{0.0f, std::array{1.0F, 2.0F, 3.0F}};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句