как распечатать содержимое аргумента функции c с учетом такой информации

#c #c 11 #ros

#c #c 11 #ros

Вопрос:

У меня есть код c 11, который имеет функцию, подобную следующей:

 bool prepareSwitch(const std::list<hardware_interface::ControllerInfo>amp; start_list,
                   const std::list<hardware_interface::ControllerInfo>amp; stop_list)
  

для отладки этого кода я хотел бы исследовать / распечатать, например, start_list , однако наличие довольно базового опыта в c сделало это для меня запутанным. Тем не менее, дополнительная информация, которую я могу получить об этом входном аргументе, примерно <hardware_interface::ControllerInfo> описана в этой документации.

Я не уверен, как использовать эту информацию для печати или исследования этого ввода. Может кто-нибудь немного рассказать об этом?

использование std::cout << start_list << std::endl; выдало ошибку компиляции.

Комментарии:

1. Вам нужен цикл: for (const autoamp; controllerInfo : startList) {} . Я не знаю, ControllerInfo может ли это отображаться как есть.

Ответ №1:

Для облегчения отладки вы можете перегрузить следующие операторы. (при необходимости измените форматирование)

 std::ostream amp; operator<<(std::ostream amp; os, const hardware_interface::InterfaceResources amp;ir)
{
  os << "hi: " << ir.hardware_interface << std::endl;
  for (const auto amp; r : ir.resources)
  {
     os << "r: "<< r << std:;endl;
  }
  return os
}

std::ostream amp; operator<<(std::ostream amp; os, const hardware_interface::ControllerInfo amp;ci)
{
  os << "name:" << ci.name << std::endl;
  os << "type: " << ci.type<< std::endl;
  for (const auto amp; cr : ci.claimed_resources)
  {
     os << "cr: " << cr << std::endl;
  }
  return os
}
  

Затем вы можете распечатать аргументы своих функций:

 for (const autoamp; ci: startList) 
{
   std::cout << ci;
}