[Rcpp-devel] module with vector<Mytype> when Mytype has children with inheritence

Romain Francois romain at r-enthusiasts.com
Tue Apr 2 13:51:00 CEST 2013


You posted twice.

This looks like something related to const ness. I'll have a look at 
what I can do. Seems like we need to add some const in the
Module_generated_CppMethod.h file

e.g.

SEXP operator()( Class* object, SEXP*) const {
	return Rcpp::module_wrap<OUT>( (object->*met)( ) ) ;
}

...

Romain

Le 02/04/13 13:15, Robin Girard a écrit :
> Hello list,
> I'm having troubles using module on a class that redefines a vector of Mytype where Mytype is type that has several children types. Mytype has only methods while cihldren inherit methods and have fields that are double or integer or string.
>
> - when I remove inheritance everything work fine.
> - with inheritance, when I remove the push_back function redeclaration everything works fine
> - I am using the .derives in the module definitions
>
> I understand that I fully fall into the known shortcomming annouced in the Rcpp module vignette, I have tryed to read more about wrap (where my problem seems to be) digging into RcppArmadillo and RcppGSL, but it's a bit over my level of understanding for now since I'm new to cpp and don't fully understand template programming. I would like to know if there is a simple workaround in my case.
>
> The end of the error message in case this helps (Mytype is consumptionMean):
>
> C:/R/R-2.15.2/library/Rcpp/include/Rcpp/internal/wrap.h:882:96:   instantiated from 'SEXPREC* Rcpp::module_wrap(const T&) [with T = consumptionMean, SEXP = SEXPREC*]'
> C:/R/R-2.15.2/library/Rcpp/include/Rcpp/module/Module_generated_CppMethod.h:104:138:   instantiated from 'SEXPREC* Rcpp::CppMethod1<Class, OUT, U0>::operator()(Class*, SEXPREC**) [with Class = consumptionMean_vec, OUT = consumptionMean, U0 = int, SEXP = SEXPREC*]'
> Mymodules.cc:84:1:   instantiated from here
> C:/R/R-2.15.2/library/Rcpp/include/Rcpp/internal/wrap.h:451:11: error: passing 'const consumptionMean' as 'this' argument of 'consumptionMean::operator SEXP()' discards qualifiers
>
> Best
> R.
>
> Dr. Girard Robin
> Chargé de Recherche
>
> MINES-ParisTech / Département Energétique et Procédés / PERSEE / Groupe ERSEI
> Centre Procédés, Energies Renouvelables et Systèmes Energétiques (PERSEE)
> Center for Processes, Renewables Energies and Energy Systems
> Renewable Energies & Smartgrids (ERSEI)
>
> 1 Rue Claude Daunesse - CS 10207 - F-06904 Sophia Antipolis Cedex
> Tel: +33.4.93.67.89.64 (~99), Fax: +33.4.93.95.75.35
> e-mail : robin.girard at mines-paristech.fr
>
> web page perso http://www.mines-paristech.fr/Services/Annuaire/&?id=8828
> statoverflow : http://stats.stackexchange.com/users/223/robin-girard
> web page centre PERSEE : http://www.cep.mines-paristech.fr/
> linkedin : http://www.linkedin.com/profile/view?id=14907272&trk=tab_pro


-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30

R Graph Gallery: http://gallery.r-enthusiasts.com

blog:            http://blog.r-enthusiasts.com
|- http://bit.ly/ZTFLDo : Simpler R help tooltips
`- http://bit.ly/YFsziW : R Help tooltips



More information about the Rcpp-devel mailing list