[Rcpp-devel] Exporting size() for NumericMatrix?

Peng Yu pengyu.ut at gmail.com
Tue Aug 28 23:42:09 CEST 2012


Hi,

For a matrix, the size intuitively should be just nrow * ncol. Hence,
it is reasonable to call size(). But the following code gives errors,
because two parent class all have the size() member function. Should
something be done to make one of them available to NumericMatrix?

suppressPackageStartupMessages(library(inline))
src='
Rcpp::NumericMatrix x(mx);
return wrap(x.size());
'
fun=cxxfunction(signature(mx="numeric"), src,
  plugin="Rcpp")
orig=matrix(1:6, 2, 3)
fun(orig)


Error in compileCode(f, code, language = language, verbose = verbose) :
  Compilation ERROR, function(s)/method(s) not created!
file3b8313201138.cpp: In function ‘SEXPREC*
file3b8313201138(SEXPREC*)’:
file3b8313201138.cpp:32: error: request for member ‘size’ is ambiguous
/Library/Frameworks/R.framework/Versions/2.15/Resources/library/Rcpp/include/Rcpp/vector/MatrixBase.h:46:
error: candidates are: int Rcpp::MatrixBase<RTYPE, na, MATRIX>::size()
const [with int RTYPE = 14, bool na = true, MATRIX = Rcpp::Matrix<14>]
/Library/Frameworks/R.framework/Versions/2.15/Resources/library/Rcpp/include/Rcpp/vector/Vector.h:275:
error:                 R_len_t Rcpp::Vector<RTYPE>::size() const [with
int RTYPE = 14]
make: *** [file3b8313201138.o] Error 1
Calls: cxxfunction -> compileCode
Execution halted


-- 
Regards,
Peng


More information about the Rcpp-devel mailing list