Const-Methode & Variablenänderung
-
Hallo,
die vierte Zeile (iter = ...) wird, wenn die Methode "const" ist, als Fehler gekennzeichnet:const sf::Image* ImageCache::get_image(std::string filename) const { std::map<std::string, const sf::Image*>::iterator iter; iter = cache.find(filename); }Ich will doch das Objekt bzw. die Member nicht ändern, sondern nur eine temporäre Variable.

Warum mag der Compiler das nicht?Fehlermeldung:
D:\Programme\CodeBlocks\Projects\g1shoot\imagecache.cpp|14|error: no match for 'operator=' in 'iter = ((const ImageCache*)this)->ImageCache::cache.std::map<_Key, _Tp, _Compare, _Alloc>::find [with _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Tp = const sf::Image*, _Compare = std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const sf::Image*> >](((const std::basic_string<char, std::char_| d:\programme\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_tree.h|154|note: candidates are: std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const sf::Image*> >& std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const sf::Image*> >::operator=(const std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const sf::Image*> >&)|
-
Sorry, unsorgfältig gelesen...
-
Weil das erstellen eines iterators keine const-Operation ist. Schließlich kann man über einen iterator ein Element ändern. Du suchst einen const_iterator.
edit2: Durch EOutOfResources edit hat sich mein vorheriges edit als Kommentar dazu erledigt

-
Wieso machst du denn keinen const_iterator wenn du nichts verändern willst?
Das sollte auch dein Problem lösen
Lg freeG
-
Wieso machst du denn keinen const_iterator wenn du nichts verändern willst?
Weil ich nicht wusste, dass es sowas gibt

Danke für die Antworten
