I realized that one again I responded off list. But yes my problem was fixed. I found the hard way that classes now require explicit constructors. Thanks, Andrew
On Thu, Dec 2, 2010 at 1:42 PM, Romain Francois <[email protected]>wrote: > Hmm. Actually my toy example was not right (it is getting late in france, I > think I've had enough screen time for one day). This works for me : > > require(inline) > require(Rcpp) > fx <- cxxfunction(, "", includes = ' > > class Foo { > public: > Foo() : x(2.0){} > Foo(double x_) : x(x_){} > double foo(){ return 0.0 ; } > > private: > double x ; > } ; > > RCPP_MODULE(bar){ > > class_<Foo>("Foo") > .constructor() > .constructor<double>() > .method( "foo", &Foo::foo ) ; > } > > > ', plugin = "Rcpp" ) > m <- Module( "bar", getDynLib(fx), mustStart = TRUE ) > Foo <- m$Foo > new( Foo ) > > Does the example work for you ? > > Romain > > Le 02/12/10 21:34, Romain Francois a écrit : > > Apparently, creation of the object works, but the show method for the >> class has a problem, so you should be able to do: >> >> obj <- new(Module("GPU_BAYES",'gpuBayes')$data3) >> >> Can you confirm ? (I only tried on a toy example) >> >> but then when you print the object, it bombs out. I'm narrowing this >> down, probably because of some oversight in the initialize method. >> >> Romain >> >> Le 02/12/10 20:36, Romain Francois a écrit : >> >>> That's odd that it only happens for your package. Guess #2 is that it >>> might be a namespace issue. Can you try adding: >>> >>> import(methods) >>> import(Rcpp) >>> >>> to your NAMESPACE file >>> >>> Romain >>> >>> Le 02/12/10 20:31, Andrew Redd a écrit : >>> >>>> That exposes the data3 class, but does not solve the pointer problem. >>>> >>>> On Thu, Dec 2, 2010 at 12:24 PM, Romain Francois >>>> <[email protected] <mailto:[email protected]>> wrote: >>>> >>>> Le 02/12/10 20:05, Andrew Redd a écrit : >>>> >>>> I updated to the new Rcpp 0.8.9 then added a new function to my >>>> class. >>>> It compiles fine the Module is found and loads the class >>>> definition >>>> seems to be there, but when I try to create a instance of the >>>> class I >>>> get the error: >>>> >>>> R> new(Module("GPU_BAYES",'gpuBayes')$data3) >>>> Error in get(".pointer", envir = env) : object '.pointer' not found >>>> >>>> Any Ideas what might be wrong here? That's a rather vague >>>> error. The >>>> traceback gives >>>> >>>> > traceback() >>>> 3: get(".pointer", envir = env) >>>> 2: function (object) >>>> standardGeneric("show")(<S4 object of class "Rcpp_data3">) >>>> 1: function (object) >>>> standardGeneric("show")(<S4 object of class "Rcpp_data3">) >>>> >>>> >>>> Thanks, >>>> Andrew >>>> >>>> >>>> In the Rcpp-modules vignette, that has been considerably updated in >>>> the last version of Rcpp (part of the 8661 new lines of code), we >>>> suggest to have this in your .onLoad: >>>> >>>> # grab the namespace >>>> NAMESPACE <- environment() >>>> >>>> .onLoad <- function(libname, pkgname){ >>>> # load the module and store it in our namespace >>>> yada <- Module( "GPU_BAYES" ) >>>> populate( yada, NAMESPACE ) >>>> } >>>> >>>> and the "data3" class is directly exposed in the namespace of your >>>> package, so that you can do: >>>> >>>> new( data3 ) >>>> >>>> Does that work ? >>>> >>>> >>>> Otherwise, maybe you can try adding mustStart = TRUE to the call to >>>> Module. >>>> >>> > > -- > Romain Francois > Professional R Enthusiast > +33(0) 6 28 91 30 30 > http://romainfrancois.blog.free.fr > |- http://bit.ly/hovakS : RcppGSL initial release > |- http://bit.ly/iaxTdO : parser 0.0-12 > `- http://bit.ly/gnCl01 : Rcpp 0.8.9 > > > _______________________________________________ > Rcpp-devel mailing list > [email protected] > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >
_______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
