2012-10-02 3 views
1

아래 예에서 컴파일을 실패하게하는 clone 메서드를 제외하고 RCPP_MODULE을 사용하여 일부 일반 C++ 메서드를 R로 내보내는 데 어려움이 없습니다. 내가 R에 생성됩니다 다른 C++ 클래스에 참조 할 수 있도록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 방법을 내보낼?

답변

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

clone이라는 Rcpp 메서드가 있으므로 사용자의 이름을 바꾸어보십시오.

+0

아니요, clone2의 복제 이름이 변경되지 않습니다. 문제는 RCPP_MODULE이'C *'매개 변수를 인식 할 수 없다는 것입니다. – chyx

+0

다른 모든 것이 실패하면 ** Rcpp 모듈 설명서 **를 읽고 ** 이것을 어떻게 사용해야 하는지를 배울 수 있습니다. –