如何在C++11中初始化包含union的结构体数组?

问题描述 投票:0回答:1

我的问题与我的另一个问题紧密相连。我一直在努力初始化包含联合结构成员的数组。 假设我在 C++11 中有以下声明

enum class FilterType { kLowPass, kAverage };

enum class FilterLowPassConfig {
  k1kHzLowPass = 0,
  k10kHzLowPass = 1,
  k20kHzLowPass = 2,
  k40kHzLowPass = 3
};

enum class FilterAverageConfig {
  kWindowSize256 = 0,
  kWindowSize128 = 1,
  kWindowSize64 = 2,
  kWindowSize32 = 3
};

union FilterConfig {
  FilterLowPassConfig low_pass_config;
  FilterAverageConfig average_config;
};

struct FilterSelect
{
  FilterType filter_type;
  FilterConfig filter_config;
};

现在我定义一个数组:

FilterSelect filter_select[2];

我该怎么做才能使用大括号括起来的初始化列表来初始化数组

filter_select
?我一直在寻找没有
boost::variant
boost::variant2
的解决方案。

arrays c++11 struct unions initializer-list
1个回答
0
投票

您可以使用大括号括起来的列表

FilterSelect filter_select[2] = {
    {FilterType::kLowPass, {.low_pass_config = FilterLowPassConfig::k10kHzLowPass}},
    {FilterType::kAverage, {.average_config = FilterAverageConfig::kWindowSize64}}
};
© www.soinside.com 2019 - 2024. All rights reserved.