我有一个头文件,其中包含以下格式的宏列表 #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
}
我有一个回调函数,我尝试调用函数 pubError
从它内部(并传递 name_of_error
)如下 -
void sensorCallback(const diagnostic_msgs::DiagnosticArrayPtr &msg)
{
msg->status[0].level == diagnostic_msgs::DiagnosticStatus::ERROR
this->sc_.pubError(CAMERA_ERROR);
}
通过这种方式,我可以在特定时间仅发布 1 个错误。如何通过函数 pubError
从头文件中发布多个错误?
最佳答案
有多种方法可以解决这个问题。假设您不想更改您的 #define
,您可以按如下方式更改您的 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++ - 一次发布多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47581663/