If I try to compile the follwoing code sample with MSVCP6.0
#include <xercesc/util/PlatformUtils.hpp> #include <xercesc/dom/deprecated/DOMString.hpp>
#include <list>
int main(int argC, char* argV[]) { xercesc::XMLPlatformUtils::Initialize(); { xercesc::DOMString o("smolerebroed"); std::list<xercesc::DOMString> oList; oList.push_back(o); };
xercesc::XMLPlatformUtils::Terminate(); return 0; };
I get the following error (sorry, only in german):
C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\xmemory(34) : error C2665: 'new' : Durch keine der 2 Ueberladungen kann Parameter 2 vom Typ 'void *' konvertiert werden
C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\xmemory(66) : Siehe Verweis auf Instantiierung der kompilierten Funktionsvorlage 'void __cdecl std::_Construct(class xercesc_2_3::DOMString *,const class xercesc_2_3::DOMString &)'
This is because my <xmemory>-include states:
template<class _T1, class _T2> inline void _Construct(_T1 _FARQ *_P, const _T2& _V) {new ((void _FARQ *)_P) _T1(_V); }
Please note the second void* argument _P of the new operator.
The default operator new in <new> implements this as
inline void *__cdecl operator new(size_t, void *_P) {return (_P); }
The XMemeory interface of DOMString does not have such a new operator (used by the push_back).
If I define and implement them in xercesc XMemory interface ... void* operator new(size_t size, void* driss) { return driss; } void operator delete(void* p, void* driss) { }; ...
Everything works fine. Does anybody have this problem, too? Am I the only fool using the deprecated Xerces-C DOMString and MSVC-STL together?
HolgeR -- holger floerke d o c t r o n i c email [EMAIL PROTECTED] information publishing + retrieval phone +49 2222 9292 90 http://www.doctronic.de
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]