我在 QAbstractItemModel 派生类 qt treeview MV 中实现(覆盖)索引函数,其中转换为指针的样子:
TreeItem* parentItem = static_cast<TreeItem*>(parent.internalPointer());
internalPointer 在哪里 void *QModelIndex::internalPointer() const
我应该如何更改代码以将来自 void pointer
的 parent.internalPointer()
转换为 std::shard_ptr<TreeItem>
?
答案 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());