我创建了一个带有模块的Rcpp-Package,其中包含以下类:
更新
C ++ Part:
class A
{
public:
void concat( A & x)
{
....
}
}
使用Rcpp模块 - 部分
RCPP_MODULE(Foo){
using namespace Rcpp;
class_<A>("A")
.method("concat", &A::concat)
;
}
和R - 部分
x <- new(A)
y <- new(A)
问题
x$concat(y)
参数1&#39; SEXP&#39;到&#39; A&#39;
我认为问题在于没有专门的包装和功能。 对我来说,目前尚不清楚,我是否需要为A类创建此模板功能? 我需要创建一个Rcpp:Xptr吗?
答案 0 :(得分:2)
您可以使用RCPP_EXPOSED_CLASS(A)
为您生成所有这些内容。有关详细信息,请参阅https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/macros/module.h。
#include <Rcpp.h>
using namespace Rcpp ;
RCPP_EXPOSED_CLASS(A)
class A{
public:
A(){}
void concat( A & x){
Rprintf( "hello\n") ;
}
} ;
RCPP_MODULE(Foo){
using namespace Rcpp;
class_<A>("A")
.default_constructor()
.method("concat", &A::concat)
;
}
给出了:
> sourceCpp( "/tmp/mod.cpp" )
>
> a <- new(A)
> b <- new(A)
> a$concat(b)
hello