gpt4 book ai didi

c++ - 如何正确初始化一个事件

转载 作者:行者123 更新时间:2023-11-30 04:43:35 24 4
gpt4 key购买 nike

我是一名学生,目前正在试验 ROS 2 中的 QoS 设置。我正在尝试实现 (RMW_EVENT_REQUESTED_DEADLINE_MISSED) 事件。

首先我声明订阅和事件:

static const rmw_subscription_t sub1
{
"sub1", (void *) "gets deadline missed", "topic1"
};
static const rmw_event_t deadline_missed =
{
"event 1" , (void *) "deadline missed", RMW_EVENT_REQUESTED_DEADLINE_MISSED
};

之后我尝试初始化事件:

rmw_subscription_event_init(deadline_missed, sub1, RMW_EVENT_REQUESTED_DEADLINE_MISSED);

但是我得到一个错误(没有匹配函数调用'rmw_subscription_event_init')

程序建议我将我的订阅和事件声明更改为:

static const rmw_subscription_t *const sub1
{
"sub1", (void *) "gets deadline missed", "topic1"
};
static rmw_event_t *const deadline_missed =
{
"event 1" , (void *) "deadline missed", RMW_EVENT_REQUESTED_DEADLINE_MISSED
};

但随后出现以下错误(标量初始值设定项中的元素过多)。

我该如何解决这个问题,这两种情况中哪一种最好?还是有其他完全不同的方式来创建此事件?

提前致谢!

最佳答案

rmw_subscription_event_init 将指针作为参数,因此您需要传递对象的内存地址 rmw_subscription_trmw_event_t :

rmw_subscription_event_init(&deadline_missed, &sub1, RMW_EVENT_REQUESTED_DEADLINE_MISSED);

您还可以将 sub1deadline_missed 的定义更改为指针(如您所建议的),但在这种情况下,您需要正确初始化指向结构的指针.我建议阅读这些 excellent answers获取更多信息。

关于c++ - 如何正确初始化一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58199232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com