3

在使用 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)
}

然而,我有兴趣学习解决这个问题的正确方法。

4

1 回答 1

2

我在 RcppBDT 包中正是这样做的。我也觉得它很乏味——对于许多类型和许多操作来说,这会很快重复——但不知道更好的方法。

于 2013-07-19T22:09:57.380 回答