Вы не упомянули сообщение об ошибке.Всегда публиковать его!
Итак, мне нужно разбить свой пост на два отдельных раздела.
Отсутствует декларация.
`error: 'Deux' was not declared in this scope`
Это потому, что Deux
неизвестно вточка, в которой вы объявляете map<>
.
. Вам нужно объявить Deux
до map<Deux, long>
, потому что map<Deux, long>
требует полного определения его параметров.
Отсутствует компаратор.
`error: no match for 'operator<' in '__x < __y'`
Это потому, что вы не определили operator<
для Deux
.`
Если вы можете определить логический operator<
, то есть тот, который не являетсяпроизвольно выбранный для сортировки, вы можете сделать это следующим образом:
// must be in same namespace as Deux
bool operator< (Deux const &lhs, Deux const &rhs) {
return lhs.foo < rhs.foo;
}
Если ему нужен доступ к закрытым членам, вы можете сделать его функцией-членом:
bool operator< (Deux const &rhs) {
return this->foo < rhs.foo;
}
Еслитакое сравнение было бы произвольным, как говорит Константиний.
В следующий раз
Вы могли бы сэкономить нам время, разместив свой действительный код или минимальный тестовый сценарий, а также упомянув сообщение об ошибке.