Ho una piccola funzione lambda che trova e restituisce un QTreeWidgetItem
. Ma se non trova l'articolo dato, restituirà un nullptr
. Ma se provo a compilarlo, allora mi dà un errore.Come restituire nullptr da una funzione lambda?
La funzione:
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.
};
L'errore:
Error 1 error C3487: 'nullptr': all return expressions in a lambda must have the same type: previously it was 'QTreeWidgetItem *' cpp 251
ho cambiato la linea indicata con questo e ora compila:
return (QTreeWidgetItem*)(nullptr);
ma vorrebbe evitare questo sintassi. Come posso risolvere questo ?
Io uso Visual Studio 2012
.
Questo sembra un bug in VS2012? – Yakk
@Yakk: perché? Il messaggio di errore è abbastanza chiaro, non è vero? – MSalters
@MSalters Hmm. Strano, in realtà pensavo che fintanto che i successivi tipi di ritorno sono compatibili (implicitamente convertibili) al primo tipo di ritorno, tutto era a-ok. – Yakk