假设我有一个 R6 类,其中一个元素是指向某个 C++ 对象的外部指针。
所以我有这样的事情:
myClass <- R6::R6Class(
"myClass",
public = list(
xp = NULL,
initialize = function(x) {
self$xp = cpp_fun_that_returns_a_pointer(x)
}
)
)
如果我使用myclass$clone()
它仍然会指向相同的myclass$xp
. 如果我这样做也会发生这种情况,myclass$clone(deep = TRUE)
因为它不知道如何在 C++ 端进行克隆。
在这种情况下,我可以使用自定义deep_clone
方法...
但是由于在我的用例中克隆类而不进行深度克隆总是错误的,我想知道是否可以clone
直接更改 的行为。
我尝试只创建一个clone()
方法,但 R6 不允许这样做。
Error in R6::R6Class("tensor", cloneable = FALSE, private = list(xp = NULL), :
Cannot add a member with reserved name 'clone'.