一次发布多个数据
Publishing multiple data at a time
我有一个标头文件,该文件具有以下格式的宏列表 #define <name_of_error> <word>,<bit> "<name_of_error>
以下是标题文件的一部分 -
#define CAMERA_ERROR 0,0, "CAMERA_ERROR"
#define IMAGE_NOT_DISPLAYING 0,1, "IMAGE_NOT_DISPLAYING"
#define CHANGE_IMAGE_CONSISTENCY 1,2, "CHANGE_IMAGE_CONSISTENCY"
现在,我有一个CPP源文件,其中我创建了一个函数pubError
并将标题文件信息作为参数 -
void pubError(int word, int bit, string name_of_error)
{
// Body of the function
}
我有一个回调函数,我尝试从其中(并传递name_of_error
)调用 pubError
,如以下 -
void sensorCallback(const diagnostic_msgs::DiagnosticArrayPtr &msg)
{
msg->status[0].level == diagnostic_msgs::DiagnosticStatus::ERROR
this->sc_.pubError(CAMERA_ERROR);
}
通过这种方式,我只能在特定时间发布1个错误。如何通过函数pubError
从标题文件中发布多个错误?
有多种方法可以解决此问题。假设您不想更改#define
s,则可以按以下方式更改pubError
功能:
struct Error { int e1; int e2; std::string error; };
void pubError(std::vector<Error> errors)
{
for (auto e : errors) std::cout << e.error.c_str() << std::endl;
}
您可以这样调用:
#define CAMERA_ERROR 0,0, "CAMERA_ERROR"
#define IMAGE_NOT_DISPLAYING 0,1, "IMAGE_NOT_DISPLAYING"
#define CHANGE_IMAGE_CONSISTENCY 1,2, "CHANGE_IMAGE_CONSISTENCY"
pubError({ { CAMERA_ERROR }, { IMAGE_NOT_DISPLAYING } });
相关文章:
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 我想使用 I2C 接收从 arduino 到 raspberry pi 的多个数据
- 使用 C++ 类定义多个数据结构
- 对多个数据成员进行排序
- 我们如何从BOOST :: ASIO :: TCP :: ip :: read_some呼叫中顺序接收多个数据
- CPP中的单个参考代表两种或多个数据类型
- C++:使用 for 循环创建多个数据结构
- 类中的静态函数给出了错误:声明中的两种或多个数据类型
- 一次发布多个数据
- 错误:'x'声明中的两个或多个数据类型
- Armadillo:在一个hdf5文件中保存多个数据集
- 使用CATCE进行BDD风格测试中多个数据的一个测试
- 哪个更快,单个对象数组或多个数据属性数组
- 如何从输入文件C++的行读取多个数据变量
- 如何拥有一个具有多个数据类型的C++堆栈
- 为什么为结构的多个数据成员而不是单个成员添加填充
- 多个数据成员的常量初始化
- 如何创建具有多个数据的节点的有向图
- 具有矢量的矢量的多个数据类型
- 如何在QT中的QShared内存中写入多个数据