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