2013-07-19 85 views
2

在使用Rcpp模塊公開的類上定義泛型方法的適當位置是什麼?更具體地說,假設以下源文件是Rcpp包的一部分。我想用+運算符與玩具類「雙師型」:使用Rcpp模塊的通用方法

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

出現以下R代碼裏面,得到期望的結果:

.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) 
} 

我,不過,興趣學習解決這個問題的正確方法。

回答

2

我正是在RcppBDT包中做的。我也發現它很乏味 - 對許多類型而言,許多操作都會很快重複 - 但不知道更好的方法。

+0

不夠公平。是否有可能修補Rcpp爲通用方法提供C++實現?我願意提供這樣的解決方案... – AlexK

+0

修補程序總是受歡迎的,特別是如果它們附帶文檔和單元測試。但是最好先在rcpp-devel上討論這個問題...... –

+2

在某些時候,我們會支持運營商來推廣C++運營商。何時發生這種情況主要取決於何時可以得到我的手。如果有人願意贊助這個開發,我很樂意起草一份設計文檔。否則,這將等到我真的需要它。 –