Я новичок в C++ и reying для использования шаблонов. У меня есть функция, которая может получить некоторые типы.C++ - ошибка при попытке использовать шаблон
Заголовок:
template <typname T>
response_t send_sequence_to_device(map<const string_t, T*> msg2device_p,
vector<response_t>& result_list, ushort num_attempts=SEND_NUM_ATTEMPTS);
Источник:
template <typname T>
response_t send_sequence_to_device(map<const string_t, T*> msg2device_p,
vector<response_t>& result_list, ushort num_attempts)
{
bool is_ok_flag = true;
response_t r;
raftor1_logs_t* rlogs;
map<const string_t, T*>::iterator msg_it;
for(msg_it=msg2device_p.begin(); msg_it!=msg2device_p.end() and is_ok_flag; msg_it++)
{
r = msg_it->second->send(msg_it->first, true, num_attempts);
result_list.push_back(r);
is_ok_flag = is_ok_flag and is_ok(r);
if(not(is_ok_flag))
{
stringstream ss;
ss << "ALERT: Sequence aborted due to error on message [" << msg_it->first << "] ";
if(r.erred())
ss << "due to communication failure.";
else
ss << "with error message [" << r.msg << "].";
rlogs->alert.begin_record();
rlogs->alert.write(ss.str());
rlogs->alert.end_record();
}
}
if(is_ok_flag)
r.set_ok("ok.\n");
return r;
}
Я получаю следующее сообщение об ошибке:
device_manager.cpp|1076|error: need 'typename' before 'std::map, T*>::iterator' because 'std::map, T*>' is a dependent scope
Предполагая, что из этого прототипа видны адекватные typedefs, это выглядит нормально. Отправьте полный фрагмент кода, который производит эту ошибку. – Quentin
@ Quentin - это соответствующий код в заголовке. Вам нужен код из Источника? – Sarit8
У вас есть 'template' в источнике? –
vu1p3n0x