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

Reply via email to