есть класс, такой как
class C_Service
{
public :
C_Service(); {memset(this, 0, sizeof(*this));}
C_Service(int type, int idx) {memset(this, 0, sizeof(*this)); this->type = type; this->idx = idx;}
bool operator==(const C_Service& svc) const { return (this->type == svc.type && this->idx == svc.idx);}
word type;
word idx;
dword aId;
dword bId;
char* name;
};
Я использовал тестовый код, как показано ниже,
void vec_find(int type, int idx)
{
vector<C_Service*> vec;
// added several items in vector vec
...
vector<C_Service*>::iterator iter;
C_Service cSvc(type, idx);
iter = find(vec.begin(), vec.end(), &cSvc);
C_Service* findsvc = *iter;
if(findsvc)
printf("FOUND : type(%d), idx(%d), name(%s)\n", findsvc->type, findsvc->idx, findsvc->name);
else
printf("Not FOUND!!\n");
}
тогда он выдает "НЕ НАЙДЕНО !!"даже установить правильное значение.Я нашел что-то не так и пытаюсь изменить ..
iter = find(vec.begin(), vec.end(), &cSvc);
на
iter = find(vec.begin(), vec.end(), cSvc);
удалить "&"
, а затем выдается сообщение об ошибке компиляции
/ libcxx /Алгоритм: в экземпляре '_InputIterator std :: __ 1 :: find (_InputIterator, _InputIterator, const _Tp &) [with _InputIterator = std :: __ 1 :: __ wrap_iter;_Tp = C_Service] ':
нет совпадения для' operator == '(типы операндов:' C_Service * 'и' const C_Service ')
Я искал это, когда использую find()
функция в контейнере, он может использовать operator==
, но я не могу получить цель .. TT
В чем моя вина?