Skip to content
Back to formatted view

Raw Message

Message-ID: <5B1E3B26-AE0B-4494-9C4B-BB46A8C28AC2@yahoo.com>
Date: 2013-03-13T14:15:22Z
From: Suresh Easwar
Subject: [Rcpp-devel] Invoking class methods via XPtr<> objects in R
In-Reply-To: <CAMhhuHKjTR619JiQ+tVcXXcGYEL3fPH_FKEaxTwX+135_UayDg@mail.gmail.com>

How does one invoke class methods via XPtr<T> objects in R? I get this error: Error in aptr$f : object of type 'externalptr' is not subsettable:
 
cpp file:
#include <Rcpp.h>
struct A {
void f() {}
};
typedef Rcpp::XPtr<A> APtr;
APtr getAPtr()
{
return APtr(new A);
}
struct B {
B(APtr) { }
};
RCPP_MODULE(mytest)
{
                Rcpp::function("get_aptr", &getAPtr);
                Rcpp::class_<A>("A")
                                .constructor()
                                .method("f", &A::f)
                ;
                Rcpp::class_<B>("B")
                                .constructor<APtr>()
                ;
}
 
R session:
R version 2.15.3 (2013-03-01) -- "Security Blanket"
Copyright (C) 2013 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-unknown-linux-gnu (64-bit)
> library(mytest)
Loading required package: Rcpp
> a <- new(A)
> aptr <- get_aptr()
> b <- new(B, aptr)
> a$f()
> aptr$f()       <- not sure how to invoke f() via aptr
Error in aptr$f : object of type 'externalptr' is not subsettable
> 
 
Thanks
 
Suresh