1
私はC++またはRcppエキスパートではないが、RからC++データメンバーにアクセスすることは可能ですか?以下の私の試みは失敗します。C++オブジェクトデータメンバーへのアクセスR
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
はいすることができますを使用しますポインタ(あなたの例はかなり正しいわけではありませんが)またはもちろん手動でgetterとsetter関数をクラスのインスタンスに渡します(そのためにもn Rから尋ねられたctorをeed)。 –
Rcppモジュールを見ていきます。あなたのhttps://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-modules.pdfドキュメンテーションがそれをカバーしているかのように見えます。ありがとうございました。 –
はい、Rcpp(とそのテスト)の内部の例を見てください。 –