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


Anmelden zum Antworten