在使用Rcpp模块公开的类上定义泛型方法的适当位置是什么?更具体地说,假设以下源文件是Rcpp包的一部分。我想将+运算符与玩具类'Double'一起使用:
#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)
}
但是,我有兴趣学习解决这个问题的正确方法。
答案 0 :(得分:2)
我在RcppBDT包中正是这样做的。我也发现它很乏味 - 对于许多类型,许多操作都会重复快速 - 但不知道更好的方法。