Hallo zusammen,
ich habe ein MFC-Projekt, in dem ich gerade auf einen tollen Fehler
gestoßen bin, den ich mir nicht erklären kann.
Ich habe im vorkompilierten Header folgendes stehen:
1 | #ifdef _DEBUG
|
2 | #define new DEBUG_NEW
|
3 | #endif
|
Jetzt habe ich eine Klasse, die als Member eine
1 | std::deque<MyObject*> m_Objects
|
hat. Wenn ich diese Zeile in dem Header-File schreibe bekomme ich
folgenden Kompiler-Fehler:
1 | d:\program files\microsoft visual studio 9.0\vc\include\xmemory(43) : error C2665: "operator new": Durch keine der 5 Überladungen konnten alle Argumenttypen konvertiert werden.
|
2 | 1> d:\program files\microsoft visual studio 9.0\vc\include\new.h(85): kann 'void *operator new(size_t,const std::nothrow_t &) throw()' sein
|
3 | 1> d:\program files\microsoft visual studio 9.0\vc\include\new.h(93): oder "void *operator new(size_t,void *)"
|
4 | 1> bei Anpassung der Argumentliste '(const char [64], int)'
|
5 | 1> d:\program files\microsoft visual studio 9.0\vc\include\xmemory(145): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "_Ty *std::_Allocate<char>(size_t,_Ty *)".
|
6 | 1> with
|
7 | 1> [
|
8 | 1> _Ty=char
|
9 | 1> ]
|
10 | 1> d:\program files\microsoft visual studio 9.0\vc\include\xmemory(144): Bei der Kompilierung der Klassen-template der char *std::allocator<_Ty>::allocate(std::allocator<_Ty>::size_type)-Memberfunktion
|
11 | 1> with
|
12 | 1> [
|
13 | 1> _Ty=char
|
14 | 1> ]
|
15 | 1> d:\program files\microsoft visual studio 9.0\vc\include\xstring(468): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::allocator<_Ty>".
|
16 | 1> with
|
17 | 1> [
|
18 | 1> _Ty=char
|
19 | 1> ]
|
20 | 1> d:\program files\microsoft visual studio 9.0\vc\include\xstring(497): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::_String_val<_Ty,_Alloc>".
|
21 | 1> with
|
22 | 1> [
|
23 | 1> _Ty=char,
|
24 | 1> _Alloc=std::allocator<char>
|
25 | 1> ]
|
26 | 1> d:\program files\microsoft visual studio 9.0\vc\include\stdexcept(47): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::basic_string<_Elem,_Traits,_Ax>".
|
27 | 1> with
|
28 | 1> [
|
29 | 1> _Elem=char,
|
30 | 1> _Traits=std::char_traits<char>,
|
31 | 1> _Ax=std::allocator<char>
|
32 | 1> ]
|
Wieso passiert das? Wenn ich den #define new DEBUG_NEW rausnehme
kompiliert alles fehlerfrei - allerdings habe ich dann eben die
Überprüfung von DEBUG_NEW nicht mehr überall im Projekt...
Gibt es eine Möglichkeit DEBUG_NEW und eine deque zu nutzen?
Vielen Dank vorab für Eure Hilfe