过去我在 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'