18
내가 그 같이 클래스 A와 클래스 B가 있다고 가정 :표준 : 찾기 '오류 일치 기능'
Class A
{
private:
int a;
public :
bool operator==(const A &) const;
//other methods(...)
}
Class B
{
private:
std::vector<A> v;
public:
std::vector<A> &get_v() {return v;};
const std::vector<A>& get_v() const;
}
을 이제 내가 할 때를 그 :
B b;
std::vector<A>::iterator it;
it=std::find (b.get_v().begin(), b.get_v().end(), an item of class A);
오류가 발생했습니다
error: no matching function for call to 'find(std::vector<A>::iterator, std::vector<A>::iterator, A&)
내가 뭔가를 잃어버렸나요? 감사합니다
그래, 알아 냈어! 감사합니다. – chiva
멋진 Cryptic C++ 오류 메시지. 대신 std :: find를 찾을 수 없기 때문에 (include가 빠져 있기 때문에), 템플릿 인수 공제/대체가 실패했다고 말합니다. – Nuclear
@Nuclear 요점은 ** ** std :: find()가 발견 될 수 있지만 OP가 찾고 있던 헤더가 아닌 다른 헤더와 다른 서명으로 오버로드 된 것입니다. C++은이 경우 전달 된 인수로 선언 된 오버로드를 해결할 수 없다는 불평을하는 것이 이상적입니다. 원인이 _ "std :: find를 찾을 수 없음"_ 인 경우 오류는 _ "std :: find가이 범위에서 선언되지 않았습니다"_ 등입니다. –