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

Cli*_* AB 3 c++ r rcpp

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

class myClass{
    Rcpp::Function myR_fun;
    myClass(Rcpp::Function userR_fun){
        myR_fun = userR_fun;
    }
};
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

class myClass{
    void* vFunPtr;
    myClass(Rcpp::Function userR_fun){
        vFunPtr = &userR_fun;
    }
};
Run Code Online (Sandbox Code Playgroud)

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

rus*_*tyx 5

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

试试这个:

class myClass {
    Rcpp::Function myR_fun;
    myClass(Rcpp::Function userR_fun)
        : myR_fun(userR_fun)
    {}
};
Run Code Online (Sandbox Code Playgroud)

使用此语法myR_fun直接构造userR_fun。