Geschachtelte Templates

Hi,

ich brauche einen Stack, in dem lauter Pointer auf queues mit int-Elementen drin sind. Nur weiss ich nicht genau, wie man sowas angibt, denn unter zu Hilfenahme der STL müsste das doch so aussehen:

stack\* \> Stack;

Aber der Compiler (Visual C++) motzt, wenn auch keine Fehlermeldungen, so doch einen Haufen von Warnungen, die ziemlich kryptisch mit einem Haufen Sonderzeichen etc. sind, ungefähr so:

c:\programme\microsoft visual studio\vc98\include\deque(197) : warning C4786: '??0?$deque@V?$queue@HV?$deque@HV? @std@@@std@@@std@@V?$allocator@V?$queue@HV?$deque@HV? @std@@@std@@@std@@@2@@std@@QAE@IABV?$queue@HV?$deque@HV?$allocator@H@std@@@std@@@1@ABV?$allocator@V?Siehe
Verweis auf Instantiierung der kompilierten Klassenvorlage ‚std::deque > >,class std::allocator > > > >‘

Wer blickt da noch durch…

Woran liegts, liegts an mir, oder dem nicht Standard-konformen Compiler? Und sind die Warnings einfach zu missachten, oder passiert sonst was? Vielleicht weiss einer die Antwort, wäre gut :wink:

Ciao,
Martin.

Hallo Martin,

da muß ich schmunzeln. Das ist die einzige Warning, die ich _immer_ ausschalte.

Hintergrund: Wenn du ein Template benutzt, legt Visual C++ einen Typ an, der den Template-Namen, den von dir eingesetzten Typ, den Accessor (z.B. für Vektoren), Vergleichsoperatoren und was weiß ich noch alles enthält. Das macht er, um einen eindeutigen Typ hinzubekommen. Ergo ist der Typname aber sehr lang. Und daran stört sich wiederum Visual C++, denn er kann keine Typnamen, die länger als 255 Zeichen sind! Also wirft er eine Warning.

Aus dem Kopf (ich mach’ das nur auf der Arbeit) mußt du sowas wie

#pragma warning(disable:4786)

ganz an den Anfang deines Codes schreiben, dann hält der Compiler die Klappe.

Chris