在使用 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)
}
然而,我有兴趣学习解决这个问题的正确方法。