我正在编写一个配置文件库,我希望有一个指向子节点的指针,以传递给期望YAML::Node*
的函数,例如用于构建YAML文档。
我可以创建一个新节点并轻松获取指针:
YAML::Node* foo = new YAML::Node(); // Null node
我可以轻松添加一个新的子节点:
(*foo)["bar"] = baz;
但是,我不知道如何获得指向(*foo)["bar"]
的指针。如果我试试
&((*foo)["bar"]);
我得到error: taking address of temporary
,这是真的,因为[]
运算符返回YAML :: Node。有没有办法获得指向(*foo)["bar"]
的指针,以便我可以将它传递给类似
void f(YAML::Node* const blah)
{
(*blah)["banana"] = 1;
}
这很有用,因为那时我可以建立一个对f
进行递归调用的树。
答案 0 :(得分:2)
只传递YAML::Node
,而不是指针。 YAML::Node
已经是引用类型,因此您可以像指针一样传递它。