declaration of construcor shadows a parameter
Есть небольшая nested-структура:
struct decode_bunch_ctrl_t
{
pure_smb2_header::flags_t request_flags;
bool flags_set;
uint64_t msg_id;
decode_bunch_ctrl_t(pure_smb2_header::flags_t request_flags_, uint64_t msg_id_)
: request_flags(request_flags_), flags_set(true), msg_id(msg_id_) {}
decode_bunch_ctrl_t()
: request_flags(pure_smb2_header::flags_t()), flags_set(false), msg_id(0) {}
operator bool () { return flags_set && msg_id; }
};
При этом структура pure_smb2_header::flags_t определена так:
struct flags_t
{
static const uint8_t PRIORITY_MASK = 0b111;
uint32_t reserved1:4;
uint32_t dfs_operations:1;
uint32_t replay_operation:1;
uint32_t reserved2:2;
uint32_t reserved3:16;
uint32_t server_to_redir:1;
uint32_t async_command:1;
uint32_t related_operations:1;
uint32_t signed_packet:1;
uint32_t priority_mask:3;
uint32_t reserved4:1;
}
При инициализации объекта конструктором без параметров выдается ошибка компилятора:
error: declaration of ‘smb2_subdecoder::decode_bunch_ctrl_t dctrl_bunch’ shadows a parameter
917 | decode_bunch_ctrl_t dctrl_bunch;
Но никаких параметров при создании объекта не затеняется. В чем проблема?
Версия компилятора:
gcc version 9.2.1 20191102 (Ubuntu 9.2.1-17ubuntu1~18.04.1)
Ответы (1 шт):
Автор решения: drem1lin
→ Ссылка
Я могу предположить, что вы не туда смотрите, похоже что вы в функции создали локальную переменную с названием, совпадающим с названием параметра. А 917 это номер строчки, где создан такой параметр.