使用模板的struct c ++中不同大小的数组

穆罕默德·布塞尔米

我有一个 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章