В прошлом я использовал оба шаблона и динамическую привязку в C++, однако в последнее время я попытался использовать их вместе и обнаружил, что его невозможно скомпилировать.Использование шаблонов 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'
Что вы подразумеваете под "динамической привязкой к памяти"? Во всяком случае, ваш код выглядит правильно. Вы должны дать нам определение 'MyClass'. –
разве вы не имели в виду 'vector' вместо' Vector'? Вы используете стандартный встроенный 'std :: vector', не так ли? –
И что означает «это не работает»? Вы должны дать нам лучшую информацию. Скомпилирует ли он? Какое сообщение об ошибке вы получаете? –