私は(何かのような)これをやっています:
void insert(Node*& node, string val, Node* parent)
{
if (node == NULL)
instantiateNode(node, val, parent);
else
insert(node->child, val, node);
}
問題は、を設定するときに関数に渡されたinstantiateNode(..., parent)
元を変更するようです。を変更することになっていますが、 を変更すると、親に設定されたノードがあり、意味がなく、機能しません。まったく。*&node
*parent
instantiateNode()
node
parent
私がポインター参照に悩まされているのは、それによって特殊なケースが排除され、実行しなければならないエラー チェックの量が大幅に削減されるためです。行数と単純なアルゴリズムっぽい重複を減らすために行っているので、コード行数を約 2 倍にすることでこれを回避できます。しかし、私はむしろそうしたくないので、同じオブジェクトを指す新しいポインターを取得するためにポインター参照を逆参照する方法が必要だと感じています。*&node
そして、本当はパス オブスルー*parent
でやるべきだと思っていたのですが、どうやら gcc が最適化しているようです。