2012-10-02 37 views
1

在下面的例子中,我使用RCPP_MODULE將一些正常的C++方法導出爲R,除了使編譯失敗的方法clone之外,我沒有任何困難。如何將R中的C++對象導出回C++?

struct C 
{ 
    void clone(C* other) 
    { 
     *this = *other; 
    } 
}; 

#include <Rcpp.h> 
using namespace Rcpp; 

RCPP_MODULE(mod){ 
    class_<C>("C") 
     .method("clone", &C::clone) 
     ; 
}; 

如何導出clone方法,所以我可以引用到被R中建立的其他C++類?

回答

5

以下內容適用於開發版本的Rcpp。在我的博客上看到this article

#include <Rcpp.h> 
using namespace Rcpp; 

RCPP_EXPOSED_CLASS(C) 

struct C 
{ 
    void clone(const C& other) 
    { 
     *this = other; 
    } 
}; 

RCPP_MODULE(play){ 
    class_<C>("C") 
     .method("clone", &C::clone) 
     ; 
}; 
1

有一種叫做克隆的Rcpp方法,所以嘗試重命名你的。

+0

不,重命名克隆爲clone2不起作用。問題是RCPP_MODULE無法識別參數'C *'。 – chyx

+0

好吧,如果一切都失敗了,你可以**閱讀Rcpp模塊文檔**,並瞭解你應該如何使用它。 –