c++ - RXcpp 连续从函数流式传输数据

标签 c++ reactive-programming allegro rxcpp

我正在学习 C++ 的响应式(Reactive),我正在寻找一些指导。我创建了一个函数来等待事件然后返回它。我想捕获响应式(Reactive)异步发生的所有事件并在它们出现时进行处理。这是我到目前为止所拥有的:

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;
}

我似乎得到了错误:没有函数模板“rxcpp::observable::create”的实例匹配参数列表。我是否需要制作自己的模板或其他东西才能观察 ALLEGRO_EVENT?

最佳答案

来自 the docs ,看起来 create 为返回类型使用了显式模板参数,因此您需要提供它。你的监听器没有返回任何东西,所以 void 可以工作。

auto events = rxcpp::observable<>::create<void>(...

关于c++ - RXcpp 连续从函数流式传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38288539/

相关文章:

c++ - 如何使用需要指向 C++ 中 void 函数的指针的 Functor 来调用 C 函数?

c++ - 将另一个窗口嵌入为 QWidget

C++0x 右值引用模板参数推导

C++ 对象超出范围

javascript - react : Assigning State Passed as Prop to Component as Variable Prevents Update?

javascript - 函数式响应式(Reactive)编程 (FRP) 可以用 monad 表达吗?

c++ - 将代码输出到 .txt

c++ - 如何找到数字总和的模数?

spring - 如何在 Webflux WebClient 中自定义异常?

c++ - Allegro 5 al_create_display(x, y) 不工作