[Rcpp-devel] problem with Rcpp::List's element by name when Rcpp::List is const reference

Dirk Eddelbuettel edd at debian.org
Mon May 28 04:56:02 CEST 2012

Hi Jiqiang,

On 27 May 2012 at 21:45, Jiqiang Guo wrote:
| Dear List:
| I am having problem with getting Rcpp::List's element by name when 
| Rcpp::List is const reference. 
| Here is a simple demo and output.  Am I not supposed to do that, but 
| it is fine using index of numbers. 

I think you simply cannot do 'const' --- if you remove the const qualifier
everything works just fine. Below is a shorter version of your example:

edd at max:~$ cat /tmp/jiqiang.r 

inc <- '
void fun(Rcpp::List & lst) {
  std::string s = Rcpp::as<std::string>(lst["v"]);
  Rprintf(\"s=%s.\\n\", s.c_str());

src <- '
  Rcpp::List l(a);

fx <- cxxfunction(signature(a = "list"), body = src,
                  includes = inc, plugin = "Rcpp")

fx(list(v = "hello"))
edd at max:~$ r /tmp/jiqiang.r 
Loading required package: methods
edd at max:~$ 

If you want const correctness in interface, copy from our 'proxy objects'
(which reference the underlying SEXP objects from R) into proper C++ / STL
objects and move from there.


Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  

More information about the Rcpp-devel mailing list