Rcpp类包装和as

时间:2014-08-27 13:36:11

标签: rcpp

我创建了一个带有模块的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吗?

1 个答案:

答案 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