私はいくつかの既存のコードを「近代化」しようとしています。
- 現在、メンバー変数「Device*device_」を持つクラスがあります。
- newを使用して初期化コードでインスタンスを作成し、破棄に「deletedevice_」があります。
- このクラスのメンバー関数は、Device*をパラメーターとして受け取る他の多くの関数を呼び出します。
これはうまく機能しますが、コードを「最新化」するには、として定義される変数を変更し、"std::unique_ptr<Device> device_"
deleteの明示的な呼び出しを削除する必要があると考えました。これにより、コードがより安全になり、一般的に優れたものになります。
私の質問はこれです-
- 次に、 device _変数をパラメーターとして必要とするすべての関数に渡すにはどうすればよいですか?
.getを呼び出して、各関数呼び出しで生のポインターを取得できます。しかし、それは醜いようで、そもそもunique_ptrを使用する理由のいくつかを無駄にします。
または、すべての関数を変更して、「Device *」タイプのパラメーターを取得する代わりに、「std :: unique_ptr&」タイプのパラメーターを取得するようにすることもできます。これは(私にとって)関数プロトタイプをやや曖昧にし、読みにくくします。
このためのベストプラクティスは何ですか?他のオプションを逃したことがありますか?