C ++ 'da oldukça yeniyim, bu yüzden öğrenirken birçok Java izmiyle tasarım yapma eğilimindeyim. Neyse, Java, bir 'arama' yöntemi ile sınıf olsaydı bir nesne iade edeceğini T
bir gelen Collection< T >
özel bir parametre eşleşti, o nesneyi döneceğini ve nesne koleksiyonunda bulunamadı, ben iade edeceğini null
. Sonra arama fonksiyonumda sadece kontrol ederdimif(tResult != null) { ... }
C ++ 'da, null
nesne yoksa bir değer döndüremeyeceğimi öğreniyorum. Sadece çağıran işleve hiçbir nesnenin bulunmadığını bildiren T tipi bir 'gösterge' döndürmek istiyorum. Bir istisna atmak istemiyorum çünkü gerçekten istisnai bir durum değil.
Kodum şu anda böyle görünüyor:
class Node {
Attr& getAttribute(const string& attribute_name) const {
//search collection
//if found at i
return attributes[i];
//if not found
return NULL; // what should this be?
}
private:
vector<Attr> attributes;
}
Bu tür bir işaretleyici verebilmek için nasıl değiştirebilirim?
std::find(first, last, value)
dönerlast
.