ฉันค่อนข้างใหม่กับ 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
หากไม่มีองค์ประกอบที่ตรงกัน