オブジェクトファイナライザーを指定すると、この Rcpp モジュールが公開された c++ クラスをコンパイルしないのはなぜですか? 動作するバージョンを提供できますか?
class Exposed{
public:
Exposed(){
printf("constructor has been called\n");
}
private:
int some_field;
}
Rcpp モジュールのチュートリアルから: 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 )
;
}