Hi,
...
CuteAlien wrote:But will have to check if this still compiles (I learned once that the templates used in xml are very sensitive to innocent changes).
No, it doesn't (I should have mentioned that I tried something like your patch before finding this thread
).
Code: Select all
g++ -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing -g -D_DEBUG -O0 -I../../include -Izlib -Ijpeglib -Ilibpng -I/usr/X11R6/include -DIRRLICHT_EXPORTS=1 -c -o irrXML.o irrXML.cpp
../../include/irrString.h: In instantiation of ‘irr::core::string<unsigned int, irr::core::irrAllocator<unsigned int> >’:
CXMLReaderImpl.h:791: instantiated from ‘irr::io::CXMLReaderImpl<unsigned int, irr::io::IXMLBase>’
irrXML.cpp:167: instantiated from here
../../include/irrString.h:840: error: ‘irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(unsigned int) [with T = unsigned int, TAlloc = irr::core::irrAllocator<unsigned int>]’ cannot be overloaded
../../include/irrString.h:803: error: with ‘irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(T) [with T = unsigned int, TAlloc = irr::core::irrAllocator<unsigned int>]’
make: *** [irrXML.o] Error 1
Note the line number 840 is off by a line or two because of a local change.
If I then comment out
Code: Select all
string<T,TAlloc>& operator += (const unsigned int i)
...
in irrString.h (around line 840) II get:
Code: Select all
g++ -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing -g -D_DEBUG -O0 -I../../include -Izlib -Ijpeglib -Ilibpng -I/usr/X11R6/include -DIRRLICHT_EXPORTS=1 -c -o CXMeshFileLoader.o CXMeshFileLoader.cpp
CXMeshFileLoader.cpp: In member function ‘virtual irr::scene::IAnimatedMesh* irr::scene::CXMeshFileLoader::createMesh(irr::io::IReadFile*)’:
CXMeshFileLoader.cpp:78: error: ambiguous overload for ‘operator+=’ in ‘tmpString += time’
../../include/irrString.h:803: note: candidates are: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(T) [with T = char, TAlloc = irr::core::irrAllocator<char>]
../../include/irrString.h:812: note: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(const T*) [with T = char, TAlloc = irr::core::irrAllocator<char>] <near match>
../../include/irrString.h:830: note: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(int)[with T = char, TAlloc = irr::core::irrAllocator<char>]
../../include/irrString.h:849: note: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(longint) [with T = char, TAlloc = irr::core::irrAllocator<char>]
../../include/irrString.h:858: note: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(const long unsigned int&) [with T = char, TAlloc = irr::core::irrAllocator<char>]
../../include/irrString.h:867: note: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(double) [with T = char, TAlloc = irr::core::irrAllocator<char>]
../../include/irrString.h:876: note: irr::core::string<T, TAlloc>& irr::core::string<T, TAlloc>::operator+=(float) [with T = char, TAlloc = irr::core::irrAllocator<char>]
make: *** [CXMeshFileLoader.o] Error 1
At this point I decided to ask the experts here
Thanks for your help!
Joerg