我最近阅读了各种智能指针类型,我认为尤其是 unique_ptr 将非常有用,并且在某种程度上,shared_ptr 和weak_ptr 也是如此。但是我不确定如何创建可以处理任何一种指针类型的“通用”函数,如果这甚至是一个好主意。
所以想象有一个由智能指针封装的对象向量,你想使用一个函数对所有元素应用一些操作,如下所示:
void doSomething(vector<shared_ptr<SomeType>>& array) {
// iterate over all array elements and do something
}
显然,您需要为 shared/unique/weak_ptr 复制此函数 3 次,这有点麻烦。拥有适合所有函数参数使用的“通用”/“多态”智能指针类型会更容易:
void doSomething(vector<generic_ptr<SomeType>>& array) {
// iterate over all array elements and do something
// no matter if array is a vector<shared_ptr> or vector<unique_ptr>
}
那么,是否存在这样的智能指针呢?如果是 - 使用它可能会出现哪些问题?如果没有 - 为什么不呢?