n function ‘void logCallback(const int&, const char*, const char*, int)’: /home/sage/catkin_log/src/sage_log_fetch/src/log_fetch.cpp:11:17: error: request for member ‘level’ in ‘msg’, which is of non-class type ‘const int’ 11 | switch (msg.level) {
时间: 2024-03-16 10:44:41 浏览: 211
ROS安装配置与语法介绍文档、ROS代码文档、树莓派与ROS结合使用等相关文档.docx
这个错误表示在你的代码中,`msg` 变量是 `int` 类型的,因此不能访问 `level` 成员变量。
通常情况下,当你在使用 `rosconsole` 记录日志时,回调函数的第一个参数应该是 `ros::console::LogLocation` 类型的。如果你的代码中将这个参数声明为 `int` 类型,则会导致这个错误。
请检查一下你回调函数的参数,确保第一个参数类型为 `ros::console::LogLocation`,例如:
```c++
void logCallback(const ros::console::LogLocation& location, const std::string& message)
{
switch (location.level) {
case ros::console::levels::Debug:
// ...
break;
case ros::console::levels::Info:
// ...
break;
case ros::console::levels::Warn:
// ...
break;
case ros::console::levels::Error:
// ...
break;
case ros::console::levels::Fatal:
// ...
break;
default:
// ...
break;
}
}
```
如果你的代码中确实需要 `int` 类型的参数,那么你需要修改 `switch` 语句中的表达式,以反映正确的数据类型并正确处理数据。
阅读全文