이 '찾기'알고리즘을 작동 시키려면 오른쪽 operator==
오버로드 기능을 사용하는 데 문제가 있습니다. 내가 뭘하는지 다른 객체 AddressBook
에 대한 매개 변수에 'Contact'객체를 전달하여 멤버 함수를 사용하여 벡터 내에서 발견 된 객체를 제거합니다. 그것은 물론 컨테이너 내에 발견되는 경우입니다. 정의가 발견 된 오류 나를 어디로 데려 갔는지C2678 binary '==': 'Contact'유형의 왼쪽 피연산자를 사용하는 연산자가 없습니다 (또는 허용되는 변환이 없음)?
void AddressBook::RemoveContact(Contact& delContact)
{
auto begin = container.begin();
auto end = container.end();
auto search = find(begin, end, delContact);
if (search != end)
{
cout << " Entry found to be deleted: " << *search << endl;
}
else
{
cout << " Entry was not found in address book." << endl;
}
}
은 다음과 같습니다
template<class _InIt,
class _Ty> inline
_InIt _Find_unchecked1(_InIt _First, _InIt _Last, const _Ty& _Val,
false_type)
{ // find first matching _Val
for (; _First != _Last; ++_First)
if (*_First == _Val)
break;
return (_First);
}
내가 다음 operator==
를 추가하기 전에이 오류가있어 유의하십시오. 그냥 가지고 그 후 더 :
class AddressBook : public IAddressBook
{
public:
AddressBook();
void AddContact(Contact& newContact);
void RemoveContact(Contact& delContact);
void DisplayContacts();
//Testing options here...
friend bool operator==(const Contact& lhs, const Contact& rhs)
{
//Working out the appropriate implementation...
}
};
내가 여기에 뭔가 잘못하고있는 중이 야 알고 있지만 나는이를 구현하기 위해 올바른 객체임을 확신합니다. 어떤 도움이라도 굉장합니다.
1로) mcve]주세요. 2)'Operator =='를 구현 했습니까 (오류 메시지에서 알 수 있듯이) 왼쪽 문의 피연산자로 'Contact'를 사용합니까? –
주소록 내에서 친구 기능을 사용하여 문제를 해결했는지 확인하려고했지만 문제가 더 심각해졌습니다. 나는 operator == overload wrong를하고 있다고 생각한다. 내가 한 일은 친구 ostream & operator == (ostream & os, Contact & c)와 같은 것을 사용했습니다. –
'operator =='다른 요소와 같은 요소를 찾는 데 사용되는 것은 무엇이라고 생각하십니까? 어떤 유형의 객체를 비교해야합니까? – juanchopanza