I am exploring the use of some XPtr objects. For example, I can create a pointer to an armadillo matrix. I can then create a copy of that matrix from the pointer within the same function. However, when I try to pass a pointer to a function and create a new copy from said pointer it fails (returns matrix of ~zeros). I feel like I am missing something obvious. Below you will find my code.
Regards, Charles test.R library(Rcpp) sourceCpp("test.cpp") A <- matrix(rnorm(10), 5) # This returns correctly testPtr(A) # passing a Xptr in to the function returns matrix of ~zeros. testReturn(testXptr(A), 5, 2) test.cpp #include <RcppArmadillo.h> using namespace Rcpp; // [[Rcpp::export]] void testPtr(SEXP data){ arma::mat A = as<arma::mat>(data); int nr = A.n_rows; int nc = A.n_cols; Rcpp::XPtr<double> ptrA(A.memptr()); arma::mat B = arma::mat( ptrA, nr, nc, true); B.print("copied matrix"); } // [[Rcpp::export]] SEXP testXptr(SEXP A) { arma::Mat<double> armaMat = Rcpp::as<arma::Mat<double> >(A); Rcpp::XPtr<double> pMat(armaMat.memptr()); return(pMat); } // [[Rcpp::export]] void testReturn(XPtr<double> ptrA, int nr, int nc) { arma::Mat<double> B = arma::Mat<double>( ptrA, nr, nc, true); B.print("copied matrix"); }
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel