使用Rcpp模块公开C ++模板类

时间:2017-06-23 18:21:33

标签: c++ r rcpp

我想知道我是否可以使用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> ...;
 ...
}

0 个答案:

没有答案