There is no constructor of Matrix tht takes a SlotProxy. You can do it in two 
steps perhaps. 

SEXP tmp = classS4.slot("M_R") ;
M = tmp ; 

Or use a specific cast: 

> M((SEXP)classS4.slot("M_R"));

In any case, you should use an initialisation list in your constructor anyway, 
something like: 

> FirstClass::FirstClass(Rcpp::S4& classS4) : M( (SEXP)classS4.slot("M_R")) {}

Hiwever, i will add the missing constructor if this does not break anything 
else. 

Romain

Le 6 mars 2013 à 08:14, Simon Zehnder <[email protected]> a écrit :

> Dear Rcpp-Devels,
> 
> I am a little confused right now with the following setting:
> 
> I have a C++ class with for example the following header
> 
> #include <RcppArmadillo.h>
> 
> class FirstClass {
> 
>    public:
>        Rcpp::NumericMatrix M;
>    
>        FirstClass(Rcpp::S4& classS4);
>        ~FirstClass();
> }
> 
> Then, in the .cc file I have:
> 
> #include <RcppArmadillo.h>
> #include "FirstClass.h"
> 
> FirstClass::FirstClass(Rcpp::S4& classS4) {
> 
>    M(classS4.slot("M_R"));     // array M_R in R
> };
> 
> FirstClass::~FirstClass(){};
> 
> Now, my compiler always gives me an error: 
> 
> error: no match for call to ‘(Rcpp::NumericMatrix {aka Rcpp::Matrix<14>}) 
> (Rcpp::RObject::SlotProxy)’
> 
> 
> Do I have to create the Matrix in the constructor differently? I want to 
> reuse memory allocated in R. Further, could the error be triggered by M_R 
> being an array in R? 
> 
> Best 
> 
> Simon
> 
> 
> _______________________________________________
> 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

Reply via email to