[Rcpp-devel] Creating pointers to objects and wrapping them

schattenpflanze at arcor.de schattenpflanze at arcor.de
Sun Apr 17 10:45:32 CEST 2011


Hello,

I have made progress exposing my C++ classes to R with Rcpp-Modules and 
I really like the way it works. Thanks for this great package!

There are, however, lots of aspects about Rcpp which I do not yet fully 
understand. Here is one of them:
I have exposed a C++ class MyClass to R via an Rcpp module. Now I would 
like to write a C++ function, which creates (pointers to) objects of 
this class. The return type should ideally be a vector/list of pointers 
to the created C++ objects. The pointers should have the same type as 
those returned by the exposed constructors of MyClass in the module. In 
particular, I want R to do the memory management and garbage collection 
when I destroy the returned list of pointers.

When I try to directly wrap an object of type MyClass or a pointer to it 
or a List containing it, I get compiler errors. So I suppose this is not 
the way to do it. I can create a vector of Rcpp::XPtrs and return it 
successfully to R, but then I cannot use the objects in R in the same 
way as those created by the constructor, namely object_pointer$method().

Is there a way to achieve this or can you recommend a reasonable 
alternative design?
How are XPtrs related to the objects a Rcpp-Module class constructor 
returns, if at all?


Meta question:
Is there a search function for the Rcpp mailing list archive?


Thanks for your help,
Peter


More information about the Rcpp-devel mailing list