【发布时间】:2017-04-29 09:35:33
【问题描述】:
对不起我的英语。我有相同的代码:
auto windowsStack = m_windowManger->windowsStack();
auto ListModel = new QStandardItemModel();
while(!windowsStack.empty())
{
auto window = windowsStack.top();
auto title = QString::fromUtf8(window->title().c_str());
auto Items = new QStandardItem(title);
ListModel->appendRow(Items);
windowsStack.pop();
}
ui->listView->setModel(ListModel);
一切正常,我的任务是替换指向智能指针的指针。我做了不止一次,我的决定:
auto windowsStack = m_windowManger->windowsStack();
auto ListModel = std::shared_ptr<QStandardItemModel>();
while(!windowsStack.empty())
{
auto window = std::shared_ptr<Window>(windowsStack.top());
auto title = QString::fromUtf8(window->title().c_str());
auto Items = std::shared_ptr<QStandardItem>(new QStandardItem(title));
ListModel->appendRow(Items.get());
windowsStack.pop();
}
ui->listView->setModel(ListModel.get());
但最后,我得到消息:程序意外结束。在提示符处输入:
ListModel->appendRow(Items.get());
新版本:
auto ListModel = std::make_shared<QStandardItemModel>();
while(!windowsStack.empty())
{
auto window = windowsStack.top();
windowsStack.pop();
auto title = QString::fromUtf8(window->title().c_str());
ListModel->appendRow(new QStandardItem(title));
}
ui->listView->setModel(ListModel.get());
【问题讨论】:
标签: c++ c++11 pointers smart-pointers