mi sa che hai proprio ragione ; )Originariamente inviato da MacApp
Più errori in fase di compilazione = meno errori runtime
;-)
Comunque, ho risolto il problema sopra: bastava mettere "typename" davanti a CEGUISingletonX. Evviva.
Ovviamente mi da altri errori adesso![]()
Pare infatti che usare la ext/hash_map abbia confuso il compilatore visto che viene usata anche nel motore grafico. g++ mi dice:
quindi non capisce più che funzione di hash usare mi sembra... è un errore assurdo perchè OGRE è stato compilato correttamente. Ad ogni modo quel benedetto OgreString.h contiene questo:codice:/usr/local/include/OGRE/OgreString.h:40: error: specialization of ‘__gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ after instantiation /usr/local/include/OGRE/OgreString.h:40: error: redefinition of ‘struct __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ /usr/include/c++/4.1.3/ext/hash_fun.h:71: error: previous definition of ‘struct __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’
Sono a un passo da aver finito il porting accidenti !codice:#include <ext/hash_map> namespace __gnu_cxx { template <> struct hash< Ogre::_StringBase > { size_t operator()( const Ogre::_StringBase _stringBase ) const { /* This is the PRO-STL way, but it seems to cause problems with VC7.1 and in some other cases (although I can't recreate it) hash<const char*> H; return H(_stringBase.c_str()); */ /** This is our custom way */ register size_t ret = 0; for( Ogre::_StringBase::const_iterator it = _stringBase.begin(); it != _stringBase.end(); ++it ) ret = 5 * ret + *it; return ret; } }; } #endif namespace Ogre { /** Utility class for manipulating Strings. */ class _OgreExport StringUtil { ... . ... ETC ETC

Rispondi quotando