Decimal^ in int konvertieren: error C2440



  • Hallo

    ich moechte den numerischen Wert eines numericUpDown- Elements mit dem Druecken eines Buttons auslesen und danach, fuer weitere Berechnungen, in einen integer-wert konvertieren. Das Auslesen funktioniert super.
    Nur beim konvertieren erscheint die Fehlermeldung.
    Ueber einen Hinweis waere ich sehr dankbar.

    Viele Gruesse

    starter88

    private: System::Void button1_Click(System::Object^ sender,System::EventArgs^ e)
    {
    Decimal^ val=numericUpDown1->Value; // funktioniert

    int k=int (val);

    MessageBox::Show("hello "+val); // nur zum testen
    }

    error C2440: '<function-style-cast>': 'System::Decimal ^' kann nicht in 'int' konvertiert werden
    1> Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
    1> Ein Typ, der eine Adresse im gc-Heap darstellt, kann nur durch Festhalten in einen Integralwert konvertiert werden.



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Decimal ist doch ein value Type. Warum erzeugst Du also en Handle auf den Valuetype?

    Ansonsten verwende safe_cast/static_cast und val.ToString()!



  • Martin Richter schrieb:

    Decimal ist doch ein value Type. Warum erzeugst Du also en Handle auf den Valuetype?

    Ansonsten verwende safe_cast/static_cast und val.ToString()!

    vielen dakn fuer die schnelle antwort...
    Koenntest du mir die erste variante zeigen ?
    waere super....



  • ich habe jetzt folgendes versucht, leider immer noch fehlermeldungen

    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
    Decimal^ val=numericUpDown1->Value;

    int k;
    k=static_cast<int>(val);

    MessageBox::Show("hello "+val);
    }

    error C2440: 'static_cast': 'System::Decimal ^' kann nicht in 'int' konvertiert werden
    1> Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
    1> Es gibt keinen Kontext, in dem diese Konvertierung möglich ist


  • Mod

    Warum liest Du nicht was ich schreibe. Las das Handle weg!

    Decimal val=numericUpDown1->Value;
    

    Versuche doch mal zu verstehen was Value-Types und Reference-Types sind!

    und bitte verwende Codetags!



  • es funktioniert und den unterschied zwischen value und reference kenne ich nun auch....
    vielen dank, wirklich ein super forum...


Anmelden zum Antworten