So konvertieren Sie ein Benutzer-definierter Typ primitiver Typ?
Sagen wir, wir haben eine Klasse namens Complex
repräsentiert eine komplexe Zahl.
Ich konvertieren möchten, dieses Objekt zu einer double
Objekt.
Anders herum kann ich tun, durch die Implementierung eines copy-ctor in der Anlage:
Complex(const double &d);
Aber kann ich nicht umsetzen, ich copy-ctor im Doppelzimmer erhalten einen Komplex.
Wie mache ich das? Ich weiß, es ist ein Weg mit operator-überladung, aber ich konnte nicht herausfinden, wie.
Schließlich möchte ich das diese Zeile übersetzen:
Complex c;
(double)c;
Dank!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Implementierung eines conversion-operator auf dem Komplexen Klasse:
Wenn aus irgendeinem Grund Sie nicht wollen, um muck über mit diesem, können Sie eine Globale Umstellung-Funktion:
Den richtigen Weg, dies zu tun ist das hinzufügen von ein conversion operator zu Ihrer Klasse.
und wie folgt verwendet:
Du meinst, Sie wollen, dies zu tun
Schreiben Sie eine Konvertierungs-operator für diesen Zweck
Dem reiben mit einem
Complex
Klasse ist, dass sich die komplexen zahlen sind eine Obermenge der reellen zahlen, d.h. alle reellen zahlen sind komplexe zahlen, die nicht alle komplexen zahlen sind reelle zahlen.So, während, wie andere hingewiesen, die Sie brauchen, um zu definieren, ein typecast-operator in
Complex
fürdouble
, die eigentliche Arbeit ist, was Sie in dieser Funktion. Die sicherste Sache wäre, eine exception werfen, wenn die Nummer nicht real:operator doppelklicken, was Sie brauchen
Können Sie erstellen eine benutzerdefinierte cast-operator:
- http://msdn.microsoft.com/en-us/library/ts48df3y%28v=VS.100%29.aspx
- Operator-Overloading/doublecastoperator.htm">http://www.java2s.com/Tutorial/Cpp/0200_Operator-Overloading/doublecastoperator.htm
So würde der code in etwa so Aussehen (in Ihrer Komplexen Klasse):
operator double () { return /* was auch immer Sie tun wollen, um die komplexe */}