为什么在指定对象终结器时这个 Rcpp 模块暴露的 c++ 类不能编译?你能提供一个工作版本吗?
class Exposed{
public:
Exposed(){
printf("constructor has been called\n");
}
private:
int some_field;
}
来自 Rcpp Modules 教程:class_ 的 .finalizer 成员函数可用于注册终结器。终结器是一个自由函数,它接受一个指向目标类的指针并返回 void。终结器在析构函数之前调用,因此对目标类的有效对象进行操作。可用于执行操作、释放资源等……终结器在封装C++对象的R对象被垃圾回收时自动调用。
static void finalizer_of_exposed( Exposed* ptr ){
printf("finalizer has been called\n");
}
RCPP_MODULE(yada){
class_<Exposed>("exposed")
.constructor("")
.finalizer( &finalizer_of_exposed )
;
}