[Rcpp-devel] Constructor for templated Rcpp::Matrix class from Rcpp::Dimension fails

Douglas Bates bates at stat.wisc.edu
Wed Jun 1 21:36:41 CEST 2011


I am developing classes for sparse matrices with an Rcpp interface that includes

	Rcpp::Dimension dim() const {return Rcpp::Dimension(nr(), nc());}

	Rcpp::NumericMatrix     asmatrix() const;

The implementation of the asmatrix method begins with

	Rcpp::NumericMatrix ans(dim());

which is a public constructor for the Rcpp::Matrix template but this
fails stating


In file included from
/home/bates/R/x86_64-unknown-linux-gnu-library/2.14/Rcpp/include/Rcpp/Vector.h:58:0,
                 from
/home/bates/R/x86_64-unknown-linux-gnu-library/2.14/Rcpp/include/Rcpp.h:42,
                 from RcppSparse.h:1,
                 from Module.cpp:1:
/home/bates/R/x86_64-unknown-linux-gnu-library/2.14/Rcpp/include/Rcpp/vector/Vector.h:
In constructor ‘Rcpp::Matrix<RTYPE>::Matrix(const Rcpp::Dimension&)
[with int RTYPE = 14]’:
RcppSparse.h:110:31:   instantiated from here
/home/bates/R/x86_64-unknown-linux-gnu-library/2.14/Rcpp/include/Rcpp/vector/Vector.h:640:7:
error: ‘void Rcpp::Vector<RTYPE>::init() [with int RTYPE = 14]’ is
private
/home/bates/R/x86_64-unknown-linux-gnu-library/2.14/Rcpp/include/Rcpp/vector/Matrix.h:49:3:
error: within this context
make: *** [Module.o] Error 1

I can program around this problem by generating the
Rcpp::NumericMatrix from the number of rows and number of columns but
I would class the behavior of the constructor mentioned earlier as at
least an "infelicity" (to use Bill Venables' term).


More information about the Rcpp-devel mailing list