Greetings. I'm trying to pick off, in C++, one component, which is a matrix, from an R list.
In the first appended example, starting with: ** A list containing a matrix I pass a list from R to C++ and pick it off with a simple assignment statement: ccode = ' Rcpp::List l(l_R); Rcpp::IntegerMatrix m = l["m"];; [...] This seems to work just fine. But in the second appended example, starting with: ** Putting it into a class the seemingly equivalent statement in the body of a class constructor fails with a compilation error: includes = ' class CCC{ public: CCC(Rcpp::List l){ m = l["m"]; } [...] private: Rcpp::IntegerMatrix m; } ' Error in compileCode(f, code, language = language, verbose = verbose) : Compilation ERROR, function(s)/method(s) not created! file33334060.cpp: In constructor ‘CCC::CCC(Rcpp::List)’: file33334060.cpp:23:16: error: ambiguous overload for ‘operator=’ in ‘((CCC*)this)->CCC::m = Rcpp::Vector<RTYPE>::operator[](const string&) [with int RTYPE = 19, Rcpp::Vector<RTYPE>::NameProxy = Rcpp::internal::generic_name_proxy<19>, std::string = std::basic_string<char>]((* & std::basic_string<char>(((const char*)"m"), (*(const std::allocator<char>*)(& std::allocator<char>())))))’ [...] My sessionInfo() output is at the very bottom of this message. Any idea what I'm doing wrong? Thanks, -- Mike ** A list containing a matrix #+begin_src R library(Rcpp) library(inline) includes = ' ' ccode = ' Rcpp::List l(l_R); Rcpp::IntegerMatrix m = l["m"]; return Rcpp::wrap(m(2,0)); ' fn = cxxfunction( sig = signature(l_R = "list"), body = ccode, includes = includes, plugin = "Rcpp") m <- matrix(1:6, ncol = 2) l <- list(m = m, a = 14) fn(l) #+end_src #+results: : 3 ** Putting it into a class #+begin_src R library(Rcpp) library(inline) includes = ' class CCC{ public: CCC(Rcpp::List l){ m = l["m"]; } Rcpp::IntegerMatrix mGet(){ return m; } private: Rcpp::IntegerMatrix m; } ' ccode = ' Rcpp::List l(l_R); CCC ccc(l_R); return Rcpp::wrap(ccc.mGet()); ' fn = cxxfunction( sig = signature(l_R = "list"), body = ccode, includes = includes, plugin = "Rcpp") m <- matrix(1:6, ncol = 2) l <- list(m = m, a = 14) fn(l) #+end_src #+results: > sessionInfo() R version 2.13.1 (2011-07-08) Platform: x86_64-redhat-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=C LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices datasets utils methods base _______________________________________________ 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