gpt4 book ai didi

c++ - 引用其他对象作为引用类字段

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:23 25 4
gpt4 key购买 nike

我有 C++ 背景,正在尝试学习 R。当我想要一个对象使用 C++ 类跟踪另一个已经存在的对象时,我只需添加一个指针成员。我知道 R 默认不支持指针,但我需要将该功能添加到我的引用类中。

在 C++ 中我会做类似的事情

class foo
{
public:
foo *pAnotherFoo;
}

如果我尝试做类似的事情 foo <- setRefClass( "foo", fields = list(another = "foo") )我显然得到 Error: evaluation nested too deeply: infinite recursion.... ,当 R 尝试实例化该对象时,它将实例化另一个对象,依此类推(我认为?)。

我想知道是否有某种方法可以告诉 R 我不想实例化该字段,稍后我会为其分配一个值。

最佳答案

看来您正在使用 R 中的引用类。如果是这样,您可以简单地定义

foo <- setRefClass('foo', 
fields = list(anotherObject = 'ANY'))

我相信您可以猜到,这不会强制anotherObject 属于foo 类,但您没有理由不能这样做将此值设置为类 foo 的对象。事实上,这样做会加快性能(否则,您的对象每次更改时都会检查 anotherObject 的类)。所以你想要的引用行为(没有类强制)可以通过

实现
myObj1 <- new('foo')
myObj2 <- new('foo')
myObj1$anotherObject <- myObj2

为了说明引用行为,考虑

myObj1$anotherObject$anotherObject <- 1
myObj2$anotherObject
[1] 2

关于c++ - 引用其他对象作为引用类字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com