2
假設一個我在C++以下2個功能:傳遞一個C++對象的指針的回用另一種功能在RCPP
// [[Rcpp::export]]
SEXP foo() {
int a = 1;
Rcpp::XPtr<int> ptr(&a, true);
return ptr;
}
// [[Rcpp::export]]
int bar(SEXP a){
Rcpp::XPtr<int> x(a);
int b = *x;
return b;
}
我想能夠調用像在R. 以下當然,在這個例子中,我可以在foo
中返回一個int
到R,但在我的原始代碼中,a
是一個有點複雜的數據結構,我不想只返回指向它的指針,所以它可以被其他C++重用函數bar
a <- foo()
bar(a)
在這個例子中,我預計bar(a)
返回1而不是0.我該如何解決這個問題?
尼斯。儘管技術上它也顯示泄漏,因爲你從不處理'a'。 :) –
@DirkEddelbuettel我認爲'XPtr'註冊終結器刪除對象? – cdeterman
剛剛檢查過,你是對的。很好的功能:) –