我在类 (A) 中有一个函数,它本质上将指向另一个类 (B) 的指针作为参数。B 类由它也应该接受的多个其他类继承。
我想要做的是获得这个指针的所有权,以便以后在课堂上使用,它不会再在课堂外用于其他任何事情。虽然我会将参数设为 shared_ptr,但我想尽可能避免这种情况,因为与我一起工作的其他人并没有完全了解整个智能指针的内容。有没有办法做到这一点?
这是我想做的一个例子,尽管从我测试的结果来看,这不起作用。
//In .h file
std::vector< unique_ptr< B > > data_store;
//In .cpp file
void A::add_data(B* NewItem)
{
data_store.resize(data_store.size()+1);
data_store[data_store.size()-1] = NewItem;
}
其次,我想可能使用复制构造函数或类似的东西来在类中使用智能指针:如果我必须手动删除,我必须这样做可能会有点难看。问题是我不知道是基类(B)进来还是从B继承的类。我不太确定如何处理这个问题而不必在某些地方进行硬编码类的可检查 ID 并使用正确的复制/移动构造函数,我想不惜一切代价避免。
我正在使用来自 llvm 的更新的 Clang 和 libC++,我在 2012 年 3 月 12 日英国时间上午 10 点左右进行了更新。