我有一个小的lambda函数,它将查找并返回一个QTreeWidgetItem
。但是如果它没有找到所给定的项目,则应该返回nullptr
。但是,如果我尝试编译它,那么就会出现错误。
该函数:
auto takeTopLevelItem = []( QTreeWidget* aTreeWidget, const QString& aText )
{
const int count = aTreeWidget->topLevelItemCount();
for ( int index = 0; index < count; ++index )
{
auto item = aTreeWidget->topLevelItem( index );
if ( item->text( 0 ) == aText )
{
return aTreeWidget->takeTopLevelItem( index );
}
}
return nullptr; // This causes a compilation error.
};
错误:
错误1:错误 C3487:'nullptr':lambda中的所有返回表达式必须具有相同的类型:之前它是'QTreeWidgetItem *' cpp 251
我用以下代码替换了上述行,现在它可以编译:
return (QTreeWidgetItem*)( nullptr );
但我希望避免使用这种语法。我该如何解决?
我使用 Visual Studio 2012
。