ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
841
841
EMPFEHLEN
-
09.08.10 16:34 #1
Hi,
wie kann ich einen impliziten Konvertierungsoperator definieren, mit dem ich meine Klasse in int und int in meine Klasse konvertieren kann?
In C# geht das, z.B. http://w3.c-plusplus.info/forum/view...w-is-next.html oder http://www.programmiersprachen.de/fo...ngsoperatoren/ .
Funktioniert das auch in C++?
-
Wenn ich mich richtig erinnere, einfach so:
Code cpp:1 2 3 4
class xyz { operator int(){...} };
Keinen Returnwert, trotzdem ein int zurückgeben.
Umgekehrt gibts mehrere Situationen
Einen Konstruktor, der ein int übergeben bekommt, einen =operator mit Parameter int etc.
-
09.08.10 17:54 #3
Dankeschön.

Ich habe jetzt folgenden Code; wie man sieht, möchte ich eine Klassenstruktur wie in Java erstellen.
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
class Object{ public: Object(){} Object(int i){}; //1 char* toString(){ return "Object_instance"; } void print(){ std::cout<<toString()<<endl; } }; class Integer : public Object { int i; public: Integer(int x):i(x){}; //2 Integer(){} operator int(){ return i; } char* toString(){ return "Integer_instance"; } // void print(){ // std::cout<<toString()<<endl; //3 // } }; void print(Object o){ o.print(); } int main(int argc, char* argv[]) { print(4); //4 Integer i; i = 4; i.print(); //5 Object o = i; o.print(); int j = i; std::cin.get(); return 0; }
1. Wenn ich bei //4 die print(4)-Funktion aufrufe, wird der Konstruktor von Object (//1) aufgerufen. Leider kann ich nicht auf den Integer-Konstruktor (//2) "umleiten", weil ich den Object-Konstruktor weder löschen noch abstrakt definieren kann.
Wie kann ich es machen, dass hier der Integer-Konstruktor aufgerufen wird?
2. Wieso wird bei //5 nur "Object_instance" ausgegeben, wenn ich die Funktion bei //3 weglasse? Ich dachte, dass die Methode print() von Object innerhalb der Integer-Klasse auf die Integer-Methode toString() zugreift?
|| EDIT: Das 2. Problem habe ich gelöst; man muss in der Object-Klasse die Methode als virtual definieren, dann funktioniert es.
|| EDIT2: Diese Funktion habe ich eingefügt, jetzt ist auch das erste Problem gelöst:
Code cpp:1 2 3
void print(int i){ print(Integer(i)); }
Geändert von Jellysheep (10.08.10 um 15:56 Uhr)
Ähnliche Themen
-
Problem mit eigener Klasse und Objekten dieser Klasse
Von Eroli im Forum C/C++Antworten: 15Letzter Beitrag: 10.06.10, 17:48 -
settimeout in eigener klasse auf eine Methode der Klasse
Von user2580 im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 12.04.09, 16:26 -
Array mit eigener Klasse füllen
Von Hackbard_C im Forum C/C++Antworten: 1Letzter Beitrag: 04.07.07, 13:53 -
Probleme mit eigener Klasse
Von Rene42 im Forum .NET CaféAntworten: 3Letzter Beitrag: 16.02.07, 09:25 -
JPanel in eigener Klasse erstellen..
Von f-zoid im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 05.05.06, 16:55





Zitieren

Login





