Я пытаюсь использовать структуру для моей карты в C ++.Структура проста:
struct index{
int x;
int y;
int z;
bool operator<(const index &b){
bool out = true;
if ( x == b.x ){
if ( y == b.y ){
out = z < b.z;
} else out = y < b.y;
} else out = x < b.x;
return out;
}
};
Но при компиляции я получаю ошибку:
/ usr / lib / gcc / x86_64-redhat-linux / 4.1.2 /../../../../include/c++/4.1.2/bits/stl_function.h: в функции-члене 'bool std :: less <_Tp> :: operator () (const _Tp &, const _Tp &) const[с _Tp = мембрана :: индекс] ': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_map.h: 347: создается из '_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] (const _Key &) [with _Key = мембрана :: index, _Tp = std :: set, std:: less>, std :: allocator>>, _Compare = std :: less, _Alloc = std :: allocator, std :: less>, std :: allocator>
] 'memMC.cpp: 551: создается здесь
Что, насколько я могу судить, означает, что мне нужно перегрузить оператор ().Однако я не знаю, что обычно делает этот оператор, поэтому я не знаю, как правильно его перезаписать.Википедия говорит мне, что это оператор приведения, но я не думаю, что они возвращают bool ...
Сбой компилятора при первой попытке доступа к элементу карты с помощью оператора [].