私はこのように見えた機能を実装する必要がありました。 MyList
クラスは、next
変数へのポインタを持つノードを持ち、リスト内のオブジェクトはユーザー定義でした。オブジェクトのリストを実装するときに動的割り当てを処理する方法は?関数は、2個のリストを取り、新しいリストに各オブジェクトの合計を置い</p> <pre><code>MyList * sum (MyList * l1, MyList * l2) { MyList * newlist = new MyList(); //Adds two objects and place the result in a third new list return newlist; } </code></pre> <p>:
それで、私はオブジェクトとリスト自体からのメモリの動的割り当てをどのように扱うべきですか?新しいリストのオブジェクトごとにメモリを作成しなければならなかったからです。
ダイナミックアロケーションに頼ることなく、オブジェクトの合計の値を新しいリストに配置する方法はありますか?これに代えて
Object result(node1->content + node2->content);
Node->content = &result; // will this object be erased when the function ends?
:
Node->content = new Object(node1->content + node2->content);
はどのようにして保持する変数に関連して、関数の内部で作成された新しいリストの寿命に対処すべきであるかもしれないこのような何かを実行して、関数の終了後のメモリ?新しいリストを返すときに、このようなことをすることはできますか?短いで
MyList & sum (MyList * l1, MyList * l2) {
//Create variable without allocating memory and return it's reference
}
、私の主な疑問は、関数の内部で作成され、他のオブジェクトが保持されるオブジェクトの寿命に対処する方法です。
あなたは 'std :: shared_ptr' /' std :: unique_ptr'を考えましたか? –
'std :: list'を使います。 'std :: list'は自動的にメモリを管理します。 –
Uhh、なぜ誰かがその関数の署名を主張するでしょう... – HolyBlackCat