binary '<' : no operator defined which takes a left-hand operand of type 'const class CTest' (or there is no acceptable conversion).
Как решить эту проблему?
Здравствуйте StasT, Вы писали:
ST>Создаю map<CTest, int> получаю ошибку:
ST>binary '<' : no operator defined which takes a left-hand operand of type 'const class CTest' (or there is no acceptable conversion). ST>Как решить эту проблему?
Здравствуйте StasT, Вы писали:
ST>Создаю map<CTest, int> получаю ошибку:
ST>binary '<' : no operator defined which takes a left-hand operand of type 'const class CTest' (or there is no acceptable conversion). ST>Как решить эту проблему?
Скорее всего map не виден, т.е. либо файл не подключен, там где map лежит (#include ...) либо namespace не открыт (using namspace ... или std::map<CTest, int> ).
Здравствуйте StasT, Вы писали:
ST>Создаю map<CTest, int> получаю ошибку:
ST>binary '<' : no operator defined which takes a left-hand operand of type 'const class CTest' (or there is no acceptable conversion). ST>Как решить эту проблему?
Компилятор требует определить порядок (оператор <) для объектов класса CTest, поскольку имеено он используется в формировании порядка следования пар в ассоциативном контейнере.
Здравствуйте StasT, Вы писали:
ST>Создаю map<CTest, int> получаю ошибку:
ST>binary '<' : no operator defined which takes a left-hand operand of type 'const class CTest' (or there is no acceptable conversion). ST>Как решить эту проблему?
1. Завести этот оператор. + он должен вводить осмысленное отношение порядка.
Например.
inline bool operator < (const CTest &a, const CTest &b)
{ return &a < &b; }
// используется неизменность адресов объектов и линейная упорядоченность памяти.
2. Написать спецмализацию std::less<CTest>
3. и еще что-то, а что точно, не помню
Здравствуйте StasT, Вы писали:
ST>operator <, operator == — перегружены!
А bool operator<(const CTest& x) const перегружен ?
Обрати внимание на слово const в конце.
Здравствуйте StasT, Вы писали:
ST>Создаю map<CTest, int> получаю ошибку:
ST>binary '<' : no operator defined which takes a left-hand operand of type 'const class CTest' (or there is no acceptable conversion). ST>Как решить эту проблему?
А ключем в мапе должен быть именно объект класс CTest???
Тогда для класса должны быть переопределены некоторые операторы (Оператор < — один из них)