我想知道我是否可以使用Rcpp模块并公开模板化的c ++类,可能是这样的:
#include <Rcpp.h>
#include <vector>
template <typename T>
class vec
{
public:
vec(T x): vec_()
{}
T get(size_t i)
{
return vec_[i];
}
void push_back(T d)
{
vec_.push_back(d);
}
private:
std::vector<T> vec_;
};
RCPP_MODULE(vector_module) {
using namespace Rcpp;
class_< vec<T> >("vec")
.constructor()
.method( "push_back", &vec::push_back)
.method( "[[", &vec::get);
}
由于模块定义中的模板,因此无法编译。所以我的问题是:这可以以某种方式实现吗?或者我应该为我想要使用的所有类型的向量创建类似union
的东西,例如:
union vec_type {
std::vector<int> ...;
std::vector<std::string> ...;
...
}