В прошлом я использовал и шаблоны, и динамическое связывание в C ++, однако недавно я попытался использовать их вместе и обнаружил, что компилировать было невозможно.
Я пытаюсь сделать что-то вроде этого:
std::map<MyClass, unsigned int> mymap;
Где MyClass - это класс, использующий динамическое связывание памяти. После нескольких часов поиска у меня сложилось впечатление, что это приводит к последствиям, которые я до сих пор не могу разрешить, поэтому я надеялся получить какое-то руководство по этому вопросу и пути его решения.
Моя конечная цель - сделать что-то вроде этого:
std::vector<MyClass> MyClassPool;
//fill the vector with MyClass objects...
for(usigned int i=0 ; i<MyClassPool.size() ; i++)
{
mymap[ MyClassPool[i] ] = i;
}
Я пытался использовать указатели различными способами, но он не работает, и я не вижу, что можно сделать.
Я получаю следующие ошибки с указанным выше:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_function.h: In member function `bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = Instance]':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_map.h:338: instantiated from `_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = Instance, _Tp = float, _Compare = std::less<Instance>, _Alloc = std::allocator<std::pair<const Instance, float> >]'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_function.h:227: error: no match for 'operator<' in '__x < __y'