我遇到了Xeo的一种较旧的思考类型擦除技术,我开始想知道,应该如何修改该代码以使其与and一起使用。std::unique_ptr'ers
std::shared_ptr'ers
帖子中的代码可以在这里找到。如果输入包含的内容unique_ptrs
并且其中的数据shared_ptr'ers
变成垃圾,则代码将无法编译。我尝试的是从模板化基类继承的类,所以它也可能有点复杂。现在,这主要是出于好奇,因为我开始怀疑这是否会很困难(在一般情况下),因为这在存储复杂对象时会变得很方便,例如,std::vector
当Boost.Any不可用时。
编辑:我注意到在测试时我的代码中有一个错误,代码可以正常工作shared_ptr'ers
(内容不是垃圾),虽然不是unique_ptr'ers
. 然后,为什么不将这种类型的新实例Any_Virtual
(如 Xeo 提供的代码)存储到std::unique_ptr'ers
.
我想那么问题将是:
- 如何修改它
Any_Virtual
以便它可以使用std::unique_ptr
? - 哪个设计更好,一个
std::vector<Any_Virtual>
对象,Any_Virtual
一个智能指针在哪里,还是一个std::vector<std::unique_ptr<Any_Virtual>>
对象?或者它甚至重要吗?