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

r - C++ Class with Rcpp::Function member

本文关键字:c++ Function Rcpp 带有 成员      更新时间:2023-10-16

使用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){
    ^

错误报告有点混乱,因为我认为我已经在myClass的构造函数中初始化了myR_fun ?

我可以使用的一个解决方法是有一个void指针
class myClass{
    void* vFunPtr;
    myClass(Rcpp::Function userR_fun){
        vFunPtr = &userR_fun;
    }
};

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

使用您的语法,首先默认构造myR_fun,然后分配userR_fun

试试这个:

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

在这种语法下,myR_fun是直接使用userR_fun构造的。