私は既存のコードを "近代化"しようとしています。関数にunique_ptrを渡す
- 現在、メンバー変数 "Device * device_"を持つクラスがあります。
- これは、いくつかの初期化コードでインスタンスを作成するためにnewを使用し、destructoryに「delete device_」を持っています。
- このクラスのメンバ関数は、manyを呼び出す他の関数をパラメータとして使用します。
これはうまく動作しますが、私のコードを「近代化」に私は"std::unique_ptr<Device> device_"
のように定義する変数を変更し、コードをより安全かつ一般的に良くなり、削除する明示的な呼び出しを削除するべきであると思いました。どのように私は、その後のparamaterとしてそれを必要とするすべての機能にデバイス _変数を渡す必要があり
- -
私の質問はこれですか?
各関数呼び出しで生のポインタを取得するために.getを呼び出すことができます。しかし、これは醜いと思われ、最初にunique_ptrを使用する理由のいくつかを無駄にします。
または「*デバイス」、それは今のタイプののparamater取る代わりに、型のパラメータを取るように「のstd :: unique_ptrをを&」私はごと機能を変更することができます。これは(私にとって)関数プロトタイプをやや難解にし、読みにくいものにします。
これにはどのようなベストプラクティスがありますか?他の選択肢がありませんでしたか?
を渡しますか?あなたの説明から、私は正反対が真実だと言います。 –
@James Kanze私は同意します、unique_ptrはこの場合何も買わないようです。 – juanchopanza
あなたは正しいかもしれません。私はあなたがそれを削除することを忘れてはいけないという点でunique_ptrの "安全"が好きですが、この場合はいくらかのコストがかかるようです。 – jcoder