首页 > 解决方案 > c ++:将void指针转换为shared_ptr

问题描述

我在 QAbstractItemModel 派生类 qt treeview MV 中实现(覆盖)索引函数,其中指向指针的转换如下所示:

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

内部指针在哪里void *QModelIndex::internalPointer() const

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


标签: c++qt

解决方案


既然你说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());

推荐阅读