2013-07-19 1 views
2

Rcpp 모듈을 사용하여 노출 된 클래스에 제네릭 메서드를 정의하는 적절한 위치는 무엇입니까? 보다 구체적으로, 다음 소스 파일이 Rcpp 패키지의 일부라고 가정합니다.Rcpp 모듈을 사용하는 일반 메서드

.onLoad <- function(libname, pkgname) { 
    loadRcppModules() 
} 

.onAttach <- function(libname, pkgname) { 
    setMethod("+", signature(e1=my.double, e2=my.double), function(e1, e2) { 
    new(my.double, e1$value + e2$value) 
    }, where=.GlobalEnv) 
} 

내가 학습하지만, 관심이 다음 R 코드가 나타납니다

#include <Rcpp.h> 

class Double { 
public: 
    Double(double d); 
    double get() const; 
private: 
    ... 
}; 

RCPP_MODULE(my_module) { 
    using namespace Rcpp; 
    class_<Double>("my.double") 
    .constructor<double>() 
    .property("value", &Double::get); 
} 

가 원하는 결과를 제공하기 위해 : 나는 장난감 클래스 '더블'로 + 연산자를 사용하고 싶습니다 이 문제를 해결하는 올바른 방법.

답변

2

정확히 RcppBDT 패키지에서이를 수행하고 있습니다. 또한 지루함을 느낍니다. 많은 유형과 많은 작업에서 반복적 인 반복이 가능하지만 더 나은 방법을 알지 못합니다.

+0

충분합니다. Rcpp를 패치하여 범용 메소드에 대한 C++ 구현을 제공 할 수 있습니까? 나는 그러한 수정을 제공하는 데 열심이다 ... – AlexK

+0

패치는 언제나 환영받을 수 있습니다. 특히 문서 및 단위 테스트가 제공되는 경우 특히 그렇습니다. 그러나 먼저 rcpp-devel에 대해 논의하는 것이 가장 좋습니다. –

+2

언젠가는 C++ 운영자를 홍보하기위한 연산자를 지원할 것입니다. 이런 일이 일어날 때 나는 대부분 내 손에 달려있다. 누군가가이 개발을 후원 할 의사가 있다면 기꺼이 설계 문서 초안을 작성할 수 있습니다. 그렇지 않으면 실제로 필요할 때까지 기다릴 것입니다. –