我们有一个广泛的代码库,目前使用原始指针,我希望迁移到 unique_ptr。但是,许多函数期望原始指针作为参数,并且在这些情况下不能使用 unique_ptr。我意识到我可以使用 get() 方法来传递原始指针,但这增加了我必须接触的代码行数,而且我觉得它有点难看。我推出了自己的 unique_ptr,如下所示:
template <class T>
class my_unique_ptr: public unique_ptr <T>
{
public:
operator T*() { return get(); };
};
然后,每次我向需要原始指针的函数 parm 提供 my_unique_ptr 时,它都会自动将其转换为原始指针。
问题:这样做有什么本质上的危险吗?我原以为这会是 unique_ptr 实现的一部分,所以我假设它的遗漏是故意的——有人知道为什么吗?