带有Rcpp :: Function成员的C ++类

时间:2016-09-05 06:49:54

标签: c++ r rcpp

使用Rcpp,我希望能够为字段创建一个Rcpp::Function的C ++类。例如:

class myClass{
    Rcpp::Function myR_fun;
    myClass(Rcpp::Function userR_fun){
        myR_fun = userR_fun;
    }
};

不幸的是,上面的代码不起作用。编译时,会报告以下错误:

error: constructor for 'myClass' must explicitly initialize the member 'myR_fun'
which does not have a default constructor
    myClass(Rcpp::Function userR_fun){
    ^

错误报告有点令人困惑,因为我认为我已在myR_fun的构造函数中初始化了myClass

我可以使用的解决方法是使用无效指针

class myClass{
    void* vFunPtr;
    myClass(Rcpp::Function userR_fun){
        vFunPtr = &userR_fun;
    }
};

但从组织的角度来看,这似乎不是最理想的。使Rcpp::Function对象成为C ++类的字段的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

根据您的语法,myR_fun首先默认构建,然后分配userR_fun

请改为尝试:

class myClass {
    Rcpp::Function myR_fun;
    myClass(Rcpp::Function userR_fun)
        : myR_fun(userR_fun)
    {}
};

使用此语法myR_fun可以使用userR_fun直接构建。