Mehrdeutigkeit zwischen Sysutils::IntToStr(__int64 oder int)



  • [C++ Fehler] Unit1.cpp(574): E2015 Mehrdeutigkeit zwischen '_fastcall Sysutils::IntToStr(__int64)' und '_fastcall Sysutils::IntToStr(int)'
    

    Sysutils::IntToStr() bringt so nix. Logisch.

    Wie kann ich das regeln?

    Danke.



  • Theoretisch so:

    IntToStr( (int) meinWert );
    

    Allerdings kommt mir diese Fehlermeldung sehr komisch vor.

    Zeig mal wie du IntToStr genau aufrufst.



  • Hallo,

    Die Fehlermeldung ist nicht komisch. Es gibt halt zwei überladene Versionen von IntToStr, eine für int und eine für __int64. Er hat IntToStr mit eine Variable anderen Typs aufgerufen und da kann IntToStr nicht entscheiden was sie nehmen soll. Dann kann man z.Bsp. deine Lösung nehmen.



  • Die Fehlermeldung ist doch komisch... ich verstehe nicht, warum es zwei Funktionen geben muss. IntToStr( _int64 ) würde völlig ausreichen, da ein int implizit in einen __int64 konvertiert werden kann. Wenn man einen unsigned int übergibt hat man die gleichen Probleme, überhaupt steckt die ganze VCL voll mit so ´nem Kram, der einfach nur stört.



  • Nur das __int64 kein Standarddatentyp ist. Wenn schon, dann int.
    Wieso stören dich die überladenen Funktionen? Wenn du in deinem Programm öfters solche Mehrdeutigkeiten hast schreib dir doch eigene Überladungen für alle Datentypen die du brauchst.



  • kann ich auch vorher definieren das die IntToStr(int) verwendet werden soll?

    Danke.



  • yeah danke. IntToStr( (int) ) löst mein Prob



  • Braunstein schrieb:

    Nur das __int64 kein Standarddatentyp ist. Wenn schon, dann int.
    Wieso stören dich die überladenen Funktionen? Wenn du in deinem Programm öfters solche Mehrdeutigkeiten hast schreib dir doch eigene Überladungen für alle Datentypen die du brauchst.

    Was auch mal total latte ist, da IntToStr keine Standardfunktion ist.


Anmelden zum Antworten