मेरे पास एक छोटा लैम्ब्डा फ़ंक्शन है जो 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.
};
त्रुटि:
Error 1 error C3487: 'nullptr': all return expressions in a lambda must have the same type: previously it was 'QTreeWidgetItem *' cpp 251
मैं इस के साथ उल्लेख किया लाइन बदल गया है और अब यह संकलित:
return (QTreeWidgetItem*)(nullptr);
लेकिन मैं इससे बचने के लिए करना चाहते हैं वाक्य - विन्यास। इसे कैसे हल किया जा सकता है ?
मैं Visual Studio 2012
का उपयोग करता हूं।
यह वीएस2012 में एक बग जैसा दिखता है? – Yakk
@Yakk: क्यों? त्रुटि संदेश बिल्कुल स्पष्ट है, है ना? – MSalters
@MSalters हम्म। अजीब, मैंने वास्तव में सोचा था कि जब तक बाद के रिटर्न प्रकार संगत (निहित रूप से परिवर्तनीय) होते हैं तो पहला रिटर्न प्रकार, सब कुछ ठीक था। – Yakk