ฉันค่อนข้างใหม่กับ C ++ ดังนั้นฉันจึงมักจะออกแบบด้วย Java-isms จำนวนมากในขณะที่ฉันเรียนรู้ อย่างไรก็ตามใน Java ถ้าผมมีระดับด้วย 'ค้นหา' วิธีการที่จะกลับวัตถุTจากที่ตรงกับพารามิเตอร์ที่เฉพาะเจาะจงที่ผมจะกลับมาที่และวัตถุถ้าวัตถุไม่พบในคอลเลกชันที่ฉันจะกลับมาCollection< T > nullจากนั้นในฟังก์ชันการโทรของฉันฉันจะตรวจสอบif(tResult != null) { ... }
ใน C ++ ฉันพบว่าฉันไม่สามารถคืนnullค่าได้หากไม่มีวัตถุ ฉันแค่ต้องการส่งคืน 'ตัวบ่งชี้' ประเภท T ที่แจ้งฟังก์ชันการโทรว่าไม่พบวัตถุ ฉันไม่ต้องการโยนข้อยกเว้นเพราะมันไม่ใช่สถานการณ์พิเศษจริงๆ
นี่คือลักษณะของรหัสของฉันในตอนนี้:
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;
}
ฉันจะเปลี่ยนได้อย่างไรจึงจะให้เครื่องหมายแบบนั้นได้
std::find(first, last, value)ส่งคืนlastหากไม่มีองค์ประกอบที่ตรงกัน