2017-02-26 20 views
2

나는 C#에서 RX로 프로그램하고 이제는 rxcpp로 C++로 프로그래밍하고 싶습니다. 가장 간단한 작업을 수행하려고합니다. 클래스 멤버 변수를 observable<int>으로 정의하십시오.rxcpp 간단하게 관찰 가능 <int>

template<class T, class SourceOperator> 
class observable 

SourceOperator 무엇인가
문제로 observable가 정의되어있다?
간단한 observable<int>은 어떻게 정의합니까?

template<class T, class Source> 
observable<T> make_observable_dynamic(Source&& s) { 
    return observable<T>(dynamic_observable<T>(std::forward<Source>(s))); 
} 

내가 반환 유형으로 observale<T>을 찾을 수 있지만, 그 정의를 찾을 수 없습니다 :

은 RX-observable.hpp에서 코드에서 (라인 101)를보고합니다.
너무 이상합니다. 나는 내가 C++ 11 \ 14 & 메타 프로그래밍이 ... 분명히 토끼 구멍이

업데이트 1 :-(훨씬 더 깊은 얻을 수있는 매우 능숙 나는 정직하지만 :
observale<T>가 :-) 발견 된 그 rx-predef.hpp :

template<class T = void, 
     class SourceObservable = typename std::conditional<std::is_same<T,void>::value, 
      void, 
      dynamic_observable<T>>::type> 
class observable; 

ok 내 현재의 추측은 dynamic_observable은 '보통'observable<T>이 동적 인 유형이 증가한 T 스트림임을 의미합니다. 명시 적 유형의 변수로만 유형 삭제 스트림을 sotre 할 수 있으므로 논리적입니다.
template<class T, class SourceOperator> class observable의 구문을 사용하면 'decorator' pattern (컴파일 타임 데코레이션)에 다른 관찰 가능 항목과 결합 된 관찰 가능 유형을 만들 수 있다는 다음 추측으로 이어집니다. 예시 here

+0

이상한 일입니다. [github] (https://github.com/Reactive-Extensions/RxCpp) 페이지의 예제는'SourceOperator'를 지정하지 않고 여러 변수를 정의합니다 : 'observable '및 'observable '. – Rakete1111

+0

이 문서의 문서는 정말 짜증납니다. http://reactive-extensions.github.io/RxCpp/classrxcpp_1_1observable.html#details는 의미가 무엇인지 설명하지 않고 모든 곳에서'SourceOperator '를 사용합니다. 확실히 개인 장난감 프로젝트의 외부에서 사용할 것이 아닙니다. –

+1

예, 업데이트 1이 맞습니다! C++에서 기본값은 컴파일러가 전체 정적 유형을보고 성능을 위해 모든 연산자를 축소하는 것입니다. SourceOperator는 일반 관찰 가능 유형에 의해 유지되는 관찰 가능 항목의 전체 유형입니다. 관측 가능 객체에 대한 as_dynamic() 메소드는 유형 지움 된 관측 값 을 반환합니다. 이는 가상 함수 호출 오버 헤드와 디폴트가 피하는 힙 할당 오버 헤드를 부과합니다. –

답변

0

observale<T> 뭔가가 :-) 밝혀졌다 그 RX-predef.hpp에서 :

template<class T = void, 
     class SourceObservable = typename std::conditional<std::is_same<T,void>::value, 
      void, 
      dynamic_observable<T>>::type> 
class observable; 

dynamic_observable는 T. 의 동적 입력 - ereased 스트림이 논리 것 인 observable<T> 수단 , 형식을 지운 스트림을 명시 적 유형의 변수로만 sotre 할 수 있습니다.
의 구문을 사용하면 'decorator' pattern (컴파일 타임 데코레이션)에 다른 관찰 가능 항목과 결합 된 관찰 가능 유형을 만들 수 있습니다. 예를 든 것 같습니다 here