Reputation: 859
My question is tightly coupled with my another question. I have been struggling with initialization of an array containing struct members with union. Let's say I have following declarations in 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;
};
Now I define an array:
FilterSelect filter_select[2];
What shall I do to be able initialize the array filter_select
with brace-enclosed initializer list? I have been looking for a solution without boost::variant
and boost::variant2
.
Upvotes: 0
Views: 56
Reputation: 555
You can use a Brace-Enclosed List
FilterSelect filter_select[2] = {
{FilterType::kLowPass, {.low_pass_config = FilterLowPassConfig::k10kHzLowPass}},
{FilterType::kAverage, {.average_config = FilterAverageConfig::kWindowSize64}}
};
Upvotes: 0