probleme mit map iterator
-
ok, ich habe ne Klasse, die eine map enthällt(bitte erstmal noch nicht am stil meckern):
template<class key,class Allocator> class IAllocatorContainer{ public: virtual Allocator& getAllocator(key&)const=0; virtual Allocator& insert(key&,Allocator)const=0; virtual void erase(key)=0; virtual void clear()=0; }; template<class key,class Allocator=Virtual::Allocator<char> > class AllocatorContainer:public IAllocatorContainer<key,Allocator>{ private: std::map<key,Allocator> Container; public: Allocator& getAllocator(key& Key)const{ std::map<key,Allocator>::iterator pos=Container.find(Key);//da gibts problem if(pos==Container.end()){ //Fixme: exception } return pos->second; } Allocator& insert(key& Key,Allocator obj)const{ Container.insert(std::pair<key,Allocator>(Key,obj)); std::map<key,Allocator>::iterator pos=Container.find(Key);//da auch return pos->second; } void erase(key Key){ Container.erase(Container.find(Key)); } void clear(){ Container.clear(); } };
so, die klasse wird bei mir 2mal erstellt:
AllocatorContainer<float,float> b;//als test AllocatorContainer<std::string,Texture<PDIRECT3DCUBETEXTURE9,CreateCubeTexture> > CubeTextures//innerhalb einer Klasse
so, bei dem test erhalte ich 2 fehler, dass der compiler die 2 typen nicht konvertieren kann([C++ Error] Virtualfile.h(98): E2034 Cannot convert '_STL::_Rb_tree_iterator<_STL::pair<const float,float>,_STL::_Const_traits<_STL::pair<const float,float> > >' to '_STL::_Rb_tree_iterator<_STL::pair<const float,float>,_STL::_Nonconst_traits<_STL::pair<const float,float> > >')
beim 2. genau das gleiche.
so, wenn ich nun mal testweise das Interface nicht mehr vererbe, verschwindet der fehler beim float, aber beim andren bleibts da(bzw da verschwindet ein fehler, und zwar der der zur 2. funktion welche einen iterator benutzt gehört).
wenn ich aber mit vererbten interface einfach nur die inhalte der beiden Funktionen ausklammere(also in kommentartags setze) verschwinden alle fehler,das interface scheint also korrekt zu sein.
nun frag ich mich doch, wo ich den dummen fehler gemacht hab, is wahrscheinlich wieder sowas, wo ich mit dem kopf gegen die tischkante sause, weils so dumm ist^^//edit tzz hab grad ne halbe stunde drüber gebrütet, und kaum nerv ich euch hier mit dem thread, fällt mir auf, dass "const" in den beiden funktionen absolut überflüssig ist-und das war dann auch des rätsels lösung.
ok,wenn ihr wollt,könnt ihr mich nun geißeln, indem ihr den stil auseinanderpflückt
-
ok,wenn ihr wollt,könnt ihr mich nun geißeln, indem ihr den stil auseinanderpflückt
Der ist doch nicht so schlecht aber wenn du darauf bestehst
dann fang ich mal an
:
Es gibt keine virtuelen Destruktorentemplate<class key,class Allocator
Was ist das den? Ein Type wird groß geschrieben der andere klein. Völlig uneinheitlich.
Den Rest lasse ich für andere
-
ok,wenn ihr wollt,könnt ihr mich nun geißeln, indem ihr den stil auseinanderpflückt
Der ist doch nicht so schlecht aber wenn du darauf bestehst
von profis lernen
dann fang ich mal an
:
Es gibt keine virtuelen Destruktorenerledigt
template<class key,class Allocator
Was ist das den? Ein Type wird groß geschrieben der andere klein. Völlig uneinheitlich.
hat en bissl länger gedauert als das erste, aber habs auch erledigt
Den Rest lasse ich für andere
-
nichts weiter dran auszusetzen?
hab ich etwa schon soviel gelernt?