问题描述
我有一个c ++ 11代码,该代码具有如下功能:
bool prepareSwitch(const std::list<hardware_interface::ControllerInfo>& start_list,const std::list<hardware_interface::ControllerInfo>& stop_list)
为了调试该代码,我想研究/打印例如start_list
,但是,由于对c ++的基本了解,这使我感到困惑。但是,关于此输入参数,我可以获得的其他信息是关于<hardware_interface::ControllerInfo>
所描述的in this documentation.
我不确定如何使用此信息来打印或调查此输入。有人可以指导一下吗?
使用std::cout << start_list << std::endl;
出现编译错误。
解决方法
为简化调试,您可以重载以下运算符。 (根据需要调整格式)
std::ostream & operator<<(std::ostream & os,const hardware_interface::InterfaceResources &ir)
{
os << "hi: " << ir.hardware_interface << std::endl;
for (const auto & r : ir.resources)
{
os << "r: "<< r << std:;endl;
}
return os
}
std::ostream & operator<<(std::ostream & os,const hardware_interface::ControllerInfo &ci)
{
os << "name:" << ci.name << std::endl;
os << "type: " << ci.type<< std::endl;
for (const auto & cr : ci.claimed_resources)
{
os << "cr: " << cr << std::endl;
}
return os
}
然后您可以打印函数参数:
for (const auto& ci: startList)
{
std::cout << ci;
}