我正在尝试“现代化”一些现有代码。
- 我有一个类,它当前有一个成员变量“Device* device_”。
- 它使用 new 在一些初始化代码中创建实例,并在析构中有一个“delete device_”。
- 此类的成员函数调用许多其他以 Device* 作为参数的函数。
这很好用,但是为了“现代化”我的代码,我认为我应该更改要定义为的变量"std::unique_ptr<Device> device_"
并删除对删除的显式调用,这使得代码更安全并且通常更好。
我的问题是这个——
- 然后我应该如何将device _ 变量传递给所有需要它作为参数的函数?
我可以调用 .get 来获取每个函数调用中的原始指针。但这看起来很丑陋,并且首先浪费了一些使用 unique_ptr 的理由。
或者我可以更改每个函数,以便现在采用“std::unique_ptr&”类型的参数,而不是采用“Device*”类型的参数。这(对我来说)有点混淆了函数原型,使它们难以阅读。
对此的最佳做法是什么?我错过了其他选择吗?