我怎样才能保留对移动的东西的引用?

Lor*_*kon 6 c++ move rapidjson

我使用rapidjson有以下内容

rapidjson::Value parent;
parent.SetObject();

rapidjson::Value child;
child.SetObject();

parent.AddMember("child", child, document.GetAllocator());
Run Code Online (Sandbox Code Playgroud)

问题是当我调用时parent.AddMember(),库使我的child变量无效,因为 Rapidjson 使用移动语义。

child当它被移动时,我如何仍然保留对该值的引用?

理想情况下,我想保留对child节点的引用,以便以后可以修改它,而不必在 JSON 树中找到它。

eer*_*ika 0

不特定于rapidjson:

当你有一个对象的引用child,并且其所拥有的资源child通过移动转移到另一个对象时,该引用child仍然有效,但所引用的对象不再是拥有该资源的对象。

您不能使原始引用变量引用另一个对象。但是,如果在移动指向的对象时更改指针的值,则可以改用指针或引用包装器。


我不熟悉rapidjson,但是通过简要浏览文档,您至少可以用来parent.FindMember获取对新创建的成员的引用,并更新指向该成员的指针。