Я видел, что можно передать функцию R в качестве аргумента в C ++ , используя Rcpp. Например, вы можете сделать:
// [[Rcpp::export]]
arma::mat example_cpp_func(Rcpp::Function my_r_func, arma::mat a){
return Rcpp::as<arma::mat>(my_r_func(a));
}
Это нормально, но я ищу что-то немного другое.
Позвольте быть следующие функции:
arma::mat f1(arma::mat& a){
return a;
}
arma::mat func_2(Rcpp::Function g, arma::mat a){
return Rcpp::as<arma::mat>(g(a));
}
Я хочу вызвать func_2
в третьей функции, используя func_1
в качестве аргумента. Это возможно? Например, я стараюсь сделать:
// [[Rcpp::export]]
arma::mat func_3(arma::mat a){
return func_2(func_1, a);
## ^^^^ Pass a C++ function as a parameter
}
Это возможно с R, но когда я попытался с Rcpp / RcppArmadillo, я получаю следующую ошибку:
не удалось преобразовать 'f1' из 'arma :: mat () (arma :: mat &)' {aka 'arma :: Mat () (arma :: Mat &)'} в 'Rcpp :: Function '{aka' Rcpp :: Function_Impl '}