1
저는 C++ 또는 Rcpp 전문가는 아니지만 R에서 C++ 데이터 멤버에 액세스 할 수 있다는 것은 어리석은 질문 일 경우 사과드립니다. 내 시도가 아래에 실패R ++에서 C++ 객체 데이터 멤버에 액세스
Test.cpp에
#include <Rcpp.h>
using namespace Rcpp;
class myclass {
private:
int k;
public:
myclass(int &n) : k(n){}
int getk() const {return k;}
};
typedef myclass* pmyclass;
// [[Rcpp::export]]
XPtr<pmyclass> new_myclass(NumericVector n_) {
int n = as<int>(n_);
myclass x(n);
return(XPtr<pmyclass>(new pmyclass(&x)));
}
// [[Rcpp::export]]
NumericVector getk(SEXP xpsexp){
XPtr<pmyclass> xp(xpsexp);
pmyclass x = *xp;
return wrap(x -> getk());
}
test.R
library(Rcpp)
sourceCpp('./cpp_attempt/live_in_cpp/minimal_fail/test.cpp')
ptr <- new_myclass(10)
getk(ptr)
#19274768
당신이 할 수있는 예, 사용 중 Rcpp 모듈, 또는 외부를 통해를 사용합니다 포인터 (귀하의 예제가 꽤 정확하지는 않지만) 또는 물론 getter 및 setter 함수를 사용하여 클래스의 인스턴스에 수동으로 R에서 똑딱 거리는 eed). –
Rcpp 모듈을 살펴 보겠습니다. https://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-modules.pdf 문서에서 다루는 것처럼 보입니다. 고맙습니다. –
예 Rcpp (및 해당 테스트)의 예제를 살펴보십시오. –