Предположим, у меня есть класс 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'.