C++ ReactiveX(rx)-在对象上应用observable,而不是在observable中创建对象

C++ ReactiveX(rx)-在对象上应用observable,而不是在observable中创建对象,c++,system.reactive,reactivex,rxcpp,C++,System.reactive,Reactivex,Rxcpp,因此,我尝试将ReactiveX理解为一个库已经有一段时间了,我相信我已经开始掌握基本原理,但是,有一个问题我在文档中找不到解决方案 tldr:我想将一个可观察对象连接到一个类,而不在可观察lambda内部实际创建该类,或者在可观察对象内部创建该类,然后能够提取该类。最后,我只想以某种方式或形式使一个类成为可观察的,然后能够在可观察的范围之外使用该类 情况: 我有三层类,我有A、B和C类,其中A包含在所有的B类中,后来所有的B类包含在多个C类中。B类和C类都可能存在于多个实例中(A始终只有一个实

因此,我尝试将ReactiveX理解为一个库已经有一段时间了,我相信我已经开始掌握基本原理,但是,有一个问题我在文档中找不到解决方案

tldr:我想将一个可观察对象连接到一个类,而不在可观察lambda内部实际创建该类,或者在可观察对象内部创建该类,然后能够提取该类。最后,我只想以某种方式或形式使一个类成为可观察的,然后能够在可观察的范围之外使用该类

情况: 我有三层类,我有A、B和C类,其中A包含在所有的B类中,后来所有的B类包含在多个C类中。B类和C类都可能存在于多个实例中(A始终只有一个实例)

问题: 因此,在我的应用程序中,类A将创建一个C实例,并使用Rx使其可见。当C被实例化并准备就绪时,我想获取该类并将其传递给B实例之一。然而,我的问题是,因为我需要在可观察的create方法中的lambda中创建C类,所以我实际上无法对新的C类执行任何操作,它只存在于lambda范围中。所以我想做的是,要么将C的引用传递给可观察对象,并给它订户,要么以某种方式从可观察lambda返回C实例。我试着给lambda一个指向我的类的指针,并使lambda可变,但在这样做时,rx给了我编译错误,并抱怨rx方法是const

const auto test=rx::observable::create([&](rx::subscriber){
C(认购人);
});
//这里我想访问c
我试着这样传递,但没有成功

C类{
C(rx::用户){
认购人:下一个(55);
}
};
C*C=nullptr;
const auto test=rx::observable::create([cLambda=c](rx::subscriber)可变{
cLambda=新的C(订户);
});
test.subscribe([](输入){

好的,几天后我就解决了

结果证明我使用了错误的类型。据我所知,可观察类型实际上似乎仅限于在内部运行方法,而不将订阅服务器分发到其他任何地方。然而,在进一步阅读文档后,我发现类型
rx::subjects::subject
,这正是我想要的。一个主题可以根据需要创建多个可观察对象和订阅者,这使得获得订阅者并将其传递给C类成为可能

以下是工作代码:

rx::subjects::subject cSubject;
自动订阅服务器=cSubject.get_subscriber();
自动可观察=cSubject.get_observable();
//给C一个发射器/订阅者
C*C=新的C(&订户);
//听众
可观察的。订阅([](变量){
标准::cout