qualifyer to reference type
-
Hallo,
ich bekomme bei folgender Anweisung einen Warnhinweis C4181 (MSVC):
typedef multimap<float, const KomplexerDatentyp&> Verweise; Verweise datenVerweise;Die Beschreibung der Compilerwarnung macht mir den Sinn nicht klar.
Also warum ist das undefiniert?Danke für Eure Hilfe!
-
Hier ist Microsofts Beschreibung der Compilerwarnung.
-
Du kannst in STL-Containern keine Referenzen speichern. Nimm stattdessen Zeiger.
-
sqrt(-1) schrieb:
typedef multimap<float, const KomplexerDatentyp&> Verweise;Üblicherweise stellt ein Klassen-Template bestimmte Anforderungen an Template-Parameter. Man kann nicht alles "dort reinstecken" -- nur die Parameter, die die Anforderungen auch erfüllen. Im Falle von Containern aus der Standardbibliothek müssen es Objekt-Typen sein, die kopierbar und zuweisbar sind. Eine Referenz ist kein Objekttyp und auch nicht zuweisbar. Du verletzt also die Parameteranforderung. Mit einem Zeiger müsste es allerdings funktionieren:
typedef multimap<float, const KomplexerDatentyp*> Verweise;da Zeigertypen Objekt-Typen sind. Du kannst Zeiger im Speicher anlegen, kopieren und zuweisen.
Gruß,
SP