Я использую функцию (calc_ts
), которая вызывает другую функцию (send_sequence_to_device
), которая содержит шаблон.C++ как вызвать функцию, которая использует шаблон
decleration из send_sequence_to_device (заголовок):
///Send sequence to list of devices
template<class T>
response_t send_sequence_to_device(std::map<const string_t, T*> msg2device_p,std::vector<response_t>& result_list, ushort num_attempts=SEND_NUM_ATTEMPTS);
об осуществлении send_sequence_to_device (источник):
template<class T>
response_t send_sequence_to_device(std::map<const string_t,T*> msg2device_p, std::vector<response_t>& result_list, ushort num_attempts)
{
bool is_ok_flag = true;
response_t r;
raftor1_logs_t* rlogs;
typename std::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;
}
Реализация calc_ts (источник)
///Calculate of the time slot
bool link_layer_manager_t::calc_ts()
{
std::map<const string_t, lm_device_t *>setRegMsg={};
if (frac_msb>51200 and frac_msb<51968)
{
setRegMsg={{"trx_set_jr_fraction ' + frac_msb +' ' + frac_lsb +'", &rx}};
response_t r=send_sequence_to_device(setRegMsg);
return True;
}
else
return False;
}
Я получил следующая ошибка в строке response_t r=send_sequence_to_device(setRegMsg);
:
error: no matching function for call to 'send_sequence_to_device(std::map<const std::basic_string<char>, lm_device_t*>&)'|
Возможный дубликат [Почему шаблоны могут быть реализованы только в файле заголовка?] (Http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header- файл) – WhiZTiM