RXcpp连续从函数流数据 我正在学习C++的反应式,我正在寻找一些指导。我创建了一个函数来等待事件,然后返回它。我希望捕获使用反应式异步发生的所有事件,并在事件发生时进行处理。以下是我目前掌握的情况: int Engine::Initialize() { al_init(); display = al_create_display(1200, 800); eventQueue = al_create_event_queue(); al_install_mouse(); al_install_keyboard(); al_register_event_source(eventQueue, al_get_keyboard_event_source()); al_register_event_source(eventQueue, al_get_mouse_event_source()); //test: wait for 2 events to happen auto events = rxcpp::observable<>::create([](rxcpp::subscriber<ALLEGRO_EVENT> e) { e.on_next(WaitForEvent); e.on_next(WaitForEvent); e.on_completed(); }); events.subscribe([](ALLEGRO_EVENT e) { printf("We have an Event: %d \n", e.type); }, []() { printf("Done\n"); }); return 0; } ALLEGRO_EVENT Engine::WaitForEvent() { ALLEGRO_EVENT event; al_wait_for_event(eventQueue, &event); return event; } int引擎::初始化() { al_init(); 显示=创建显示(1200800); eventQueue=al_create_event_queue(); 安装鼠标(); 安装键盘(); al_寄存器\事件\源(eventQueue,al_get\ u键盘\事件\源()); al_寄存器\事件\源(eventQueue,al_get\ u鼠标\事件\源()); //测试:等待2个事件发生 自动事件=rxcpp::可观察::创建([](rxcpp::订阅服务器e) { e、 在下一个(WaitForEvent); e、 在下一个(WaitForEvent); e、 在_completed()上; }); 事件。订阅([](快板事件e) { printf(“我们有一个事件:%d\n”,e.type); }, []() { printf(“完成”\n); }); 返回0; } ALLEGRO_事件引擎::WaitForEvent() { 快板活动; 等待事件(事件队列和事件); 返回事件; }
我似乎得到了错误:没有函数模板“rxcpp::observable::create”的实例与参数列表匹配。我是否需要制作自己的模板或其他东西来观察ALLEGRO_事件?从中,看起来RXcpp连续从函数流数据 我正在学习C++的反应式,我正在寻找一些指导。我创建了一个函数来等待事件,然后返回它。我希望捕获使用反应式异步发生的所有事件,并在事件发生时进行处理。以下是我目前掌握的情况: int Engine::Initialize() { al_init(); display = al_create_display(1200, 800); eventQueue = al_create_event_queue(); al_install_mouse(); al_install_keyboard(); al_register_event_source(eventQueue, al_get_keyboard_event_source()); al_register_event_source(eventQueue, al_get_mouse_event_source()); //test: wait for 2 events to happen auto events = rxcpp::observable<>::create([](rxcpp::subscriber<ALLEGRO_EVENT> e) { e.on_next(WaitForEvent); e.on_next(WaitForEvent); e.on_completed(); }); events.subscribe([](ALLEGRO_EVENT e) { printf("We have an Event: %d \n", e.type); }, []() { printf("Done\n"); }); return 0; } ALLEGRO_EVENT Engine::WaitForEvent() { ALLEGRO_EVENT event; al_wait_for_event(eventQueue, &event); return event; } int引擎::初始化() { al_init(); 显示=创建显示(1200800); eventQueue=al_create_event_queue(); 安装鼠标(); 安装键盘(); al_寄存器\事件\源(eventQueue,al_get\ u键盘\事件\源()); al_寄存器\事件\源(eventQueue,al_get\ u鼠标\事件\源()); //测试:等待2个事件发生 自动事件=rxcpp::可观察::创建([](rxcpp::订阅服务器e) { e、 在下一个(WaitForEvent); e、 在下一个(WaitForEvent); e、 在_completed()上; }); 事件。订阅([](快板事件e) { printf(“我们有一个事件:%d\n”,e.type); }, []() { printf(“完成”\n); }); 返回0; } ALLEGRO_事件引擎::WaitForEvent() { 快板活动; 等待事件(事件队列和事件); 返回事件; },c++,reactive-programming,allegro,rxcpp,C++,Reactive Programming,Allegro,Rxcpp,我似乎得到了错误:没有函数模板“rxcpp::observable::create”的实例与参数列表匹配。我是否需要制作自己的模板或其他东西来观察ALLEGRO_事件?从中,看起来create为返回类型使用了显式模板参数,因此您需要提供它。您的侦听器没有返回任何内容,因此void可以工作 auto events = rxcpp::observable<>::create<void>(... auto events=rxcpp::observable::create(。。
create
为返回类型使用了显式模板参数,因此您需要提供它。您的侦听器没有返回任何内容,因此void
可以工作
auto events = rxcpp::observable<>::create<void>(...
auto events=rxcpp::observable::create(。。。
从中,看起来create
为返回类型使用了显式模板参数,因此您需要提供它。您的侦听器没有返回任何内容,因此void
可以工作
auto events = rxcpp::observable<>::create<void>(...
auto events=rxcpp::observable::create(。。。
@蒂姆的想法是对的
我正在发布我们网站的答案
create()。
另外,WaitForEvent
是一个函数,但是on_next()
需要ALLEGRO_事件
,因此确保调用WaitForEvent()
并将结果传递给on_next()
auto events=rxcpp::observable::create([this](rxcpp::subscriber e)
{
e、 下一步(此->WaitForEvent());
e、 下一步(此->WaitForEvent());
e、 在_completed()上;
});
@蒂姆的想法是对的
我正在发布我们网站的答案
create()。
另外,WaitForEvent
是一个函数,但是on_next()
需要ALLEGRO_事件
,因此确保调用WaitForEvent()
并将结果传递给on_next()
auto events=rxcpp::observable::create([this](rxcpp::subscriber e)
{
e、 下一步(此->WaitForEvent());
e、 下一步(此->WaitForEvent());
e、 在_completed()上;
});
现在我得到了这个错误:没有函数模板“rxcpp::observable::create”的实例匹配参数列表这很奇怪,因为当我粘贴文档中的示例时,它会显示相同的内容。嗯,这很奇怪。这可能是一个错误。不幸的是,我没有使用此库的任何经验。我建议在其上发布。现在我得到了以下错误:没有函数模板“rxcpp::observable::create”的实例匹配参数列表这很奇怪,因为当我粘贴文档中的示例时,它会显示相同的内容。嗯。这很奇怪。这可能是个错误。不幸的是,我没有使用此库的任何经验。我建议在他们的网站上发布。