#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;
}