C ++ инициализирует вложенный класс

Поскольку вы используете case, вы определяете частичную функцию, а частичные функции требуют фигурных скобок.

-1
задан JuliusCaesar 24 February 2019 в 23:08
поделиться

1 ответ

Используйте список инициализатора в конструкторе:

COuter::CInner::CInner(const bool is_master, const uint32_t data_length) 
:mutex(0), 
single_place{
    {is_master, data_length}, 
    {is_master, data_length}, 
    {is_master, data_length}, 
    {is_master, data_length}, 
    {is_master, data_length}}
{}

http://coliru.stacked-crooked.com/a/14be9645dbf34a36

Стоит отметить что вам почти никогда не нужен массив в качестве члена, особенно если массив относится к типу, в котором вы не хотите использовать конструктор по умолчанию. Вы, вероятно, хотите std::vector. Даже если вы думаете, что хотите использовать элемент массива, вам обычно следует использовать std::array<5, CSingle_Element>. Это требует дополнительного {} в списке инициализатора, но в остальном это чистый выигрыш.

0
ответ дан Mooing Duck 24 February 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: