2015-10-31 3 views
-1

У меня есть следующий код:forward_list :: удалить метания ошибки компиляции

typedef std::forward_list<RdidSettings> RdidList; 
RdidList m_rdids; 

//ctor for RdidSettings 
RdidSettings(_In_ const GUID& rdid, _In_ bool isDr) throw() : 


//Add to rdidlist method 
RdidSettings& AddRdid( _In_ const GUID& rdid, _In_ bool isDr ) 
{ 
    m_rdids.emplace_front(rdid, isDr); return m_rdids.front(); 
} 


//method for rdid list method 
void RemoveRdid(_In_ RdidSettings& rdidData) 
{ 
    m_rdids.remove(rdidData); <<-- whats wrong with this remove ? 
} 

В тот момент я ввожу метод удалить я начинаю получать ошибку компиляции:

forward_list (1281): ошибка C2678: binary '==': оператор не найден , который принимает левый операнд типа RdidSettings '(или нет допустимого преобразования ) может быть' bool std :: operator == (const std :: error_condition &, const std :: error_code &) бросок()»

'BOOL станд :: оператор == (Const станд :: error_condition &, Const станд :: error_code &) бросок()' 6> \ SDK \ вкл \ ucrt \ stl120 \ system_error (406): или 'bool std :: operator == (const std :: error_code &, const std :: error_condition &) throw()' 6> \ sdk \ inc \ ucrt \ exception (333): или
'bool std :: operator == (const std :: exception_ptr &, std :: nullptr_t)' 6> \ sdk \ inc \ ucrt \ exception (328): или 'bool std :: operator == (std :: nullptr_t, const std :: exception_ptr &) '6> \ sdk \ i nc \ ucrt \ exception (323): или 'bool std :: operator == (const std :: exception_ptr &, const std :: exception_ptr &)' 6> при попытке соответствовать списку аргументов '(RdidSettings, const RdidSettings)»6> \ SDK \ вкл \ ucrt \ stl120 \ forward_list (1276): при компиляции класса функции члена шаблона 'аннулируются станд :: forward_list> :: удалить (Const _Ty &)' 6> с 6> [6> _Ty = RdidSettings 6>] 6> hostsettings.cpp (65): см. Ссылку на экземпляр шаблона функции 'void std :: forward_list> :: remove (const _Ty &)' скомпилировано 6> с 6> [6> _Ty = RdidSettings 6>] 6> \ hostsetti ngs.h (181): см ссылку на шаблон класса конкретизации 'станд :: forward_list>' компилируется 6> с 6> [6> _Ty = RdidSettings

ответ

1

Я думаю, это потому, что вы не предоставите operator== для RdidSettings.

+0

Спасибо, что это значит? Вы имеете в виду реализовать перегрузку для ==. – confusednerd

+0

Это то, что используется для поиска нужного объекта? – confusednerd

+0

@confusednerd, вам необходимо предоставить operator ==, поэтому вы можете сравнить два объекта RdidSettings. –

Смежные вопросы