저는 C ++를 처음 접하기 때문에 배우는 동안 많은 Java-ism으로 디자인하는 경향이 있습니다. 어쨌든 Java에서 특정 매개 변수와 일치 하는 객체 T
를 반환하는 'search'메서드가있는 클래스가 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
합니다.