C++:将void指针转换为shared_ptr

时间:2021-06-05 09:48:36

标签: c++ qt

我在 QAbstractItemModel 派生类 qt treeview MV 中实现(覆盖)索引函数,其中转换为指针的样子:

TreeItem* parentItem = static_cast<TreeItem*>(parent.internalPointer());

internalPointer 在哪里 void *QModelIndex::internalPointer() const

我应该如何更改代码以将来自 void pointerparent.internalPointer() 转换为 std::shard_ptr<TreeItem>


1 个答案:

答案 0 :(得分:0)

既然你说 shared_ptr 应该拥有指针的所有权(delete 它自动),你想要这个:

std::shared_ptr<TreeItem> parentItem(static_cast<TreeItem *>(parent.internalPointer()));

或者,分配给现有的 shared_ptr

parentItem = std::shared_ptr<TreeItem>(static_cast<TreeItem *>(parent.internalPointer()));

parentItem.reset(static_cast<TreeItem *>(parent.internalPointer());