我目前正在研究一个项目,该项目需要我有一个向量存储指向同一类但具有不同模板值的对象的指针。我想用shared_ptrs的,我不会太深入到(主要是,如果我想共享两个ColumnLists之间的列)的原因。将shared_ptr <void>投射到shared_ptr时的行为智能指针<type>
我需要能够从一个函数返回一个指针铸造(如下图所示)。
所以这是一个非常简化的版本:
template <typename ColType>
class Column {
std::vector<ColType>;
};
template <typename ...TypesOfColumns>
class ColumnList {
private:
std::vector< std::shared_ptr<void> > columnsVector;
/* Needs to have a vector storing pointers to multiple Columns
all with different template values */
public:
template <typename ReturnType> std::shared_ptr<ReturnType> GetPointer(int index)
{
return std::static_pointer_cast<ReturnType>(columnsVector.at(index));
};
};
我,如果我得到某种类型的这里未定义行为不知道?它会工作,因为我希望:将返回铸造类型只需添加一个到虚拟指针的强参考计数器?一个可以在另一个之前被删除吗?我冒着内存泄漏的风险,其中一个被删除,另一个没有(我怀疑这是一个例子)?
一如往常,感谢所有的帮助!
[codereview.se] – cpplearner
@cpplearner我不同意。 “这个代码有效,我可以做得更好”适合于CR。 “这段代码似乎有用,但它真的”不是。 – Quentin