Saya cukup baru mengenal C ++ jadi saya cenderung mendesain dengan banyak Java-isme saat saya belajar. Bagaimanapun, di Jawa, jika saya memiliki kelas dengan metode 'pencarian' yang akan mengembalikan objek T
dari Collection< T >
yang cocok dengan parameter tertentu, saya akan mengembalikan objek itu dan jika objek tidak ditemukan dalam koleksi, saya akan kembali null
. Kemudian dalam fungsi panggilan saya, saya hanya akan memeriksaif(tResult != null) { ... }
Di C ++, saya menemukan bahwa saya tidak dapat mengembalikan null
nilai jika objek tidak ada. Saya hanya ingin mengembalikan 'indikator' tipe T yang memberi tahu fungsi pemanggil bahwa tidak ada objek yang ditemukan. Saya tidak ingin memberikan pengecualian karena ini bukanlah keadaan yang luar biasa.
Seperti inilah tampilan kode saya sekarang:
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;
}
Bagaimana saya bisa mengubahnya sehingga saya bisa memberikan penanda semacam itu?
std::find(first, last, value)
kembalilast
jika tidak ada elemen yang cocok.