我目前正在研究一個項目,該項目需要我有一個向量存儲指向同一類但具有不同模板值的對象的指針。我想用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