000
28.08.2006, 19:58 Uhr
Yadgar
|
High!
Ich bearbeite im "Aupperle" (auch wenn es hier teilweise nicht so angesagt zu sein scheint, sich an Lehrbüchern zu orientieren... aber ich bin nun einmal Anfänger und muss überhaupt erst mal eine Grundlage von C++-Kenntnissen erwerben!) das Kapitel über benutzerdefinierte Konversionen und versuche gerade, eine implizite Wandlung zwischen Objekten unterschiedlicher Klassen über einen Konstruktor zu programmieren:
C++: |
struct A { int i; double d; };
struct B { B (void); // Standardkonstruktor, initialisiert s mit Nullzeiger B (A&); // Konstruktor, initialisiert B-Objekt mit A-Objekt string s; };
B::B(void) : s(0) {}
B::B(A& a) { cout << "Implizite Typwandlung per Konstruktor!" << endl; char buf[32]; sprintf(buf, "i: %i, d: %f", a.i, a.d); s = buf; }
B fromAToB (A&);
B fromAToB (A& a_in) { cout << "Typwandlung per Funktion!" << endl; B result(a_in); char buf[32]; sprintf(buf, "i: %i, d: %f", a_in.i, a_in.d); result.s = buf; return result; }
int main() { A a; a.i=34; a.d=0.00214; B b= fromAToB(a); cout << b.s << endl;
B b2; // b2 = a; getchar(); }
|
Die (vorher, als Beispiel für eine "konventionelle" Lösung des Konversionsproblems, programmierte) Konvertierung per Funktion "fromAToB" klappt problemlos, danach steigt das Programm aber mit einer Fehlermeldung aus, wie ich sie unter DEV-C++ (ja, ich weiß, Scheißsystem, aber im Moment habe ich nichts anderes und ich kann nicht noch mehr Lernzeit verlieren, indem ich mich jetzt erst wieder in Visual C++ o. ä. einarbeite) bis jetzt noch nie gesehen habe:
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
Der zweite Satz ist natürlich Kokolores, denn der Autor der "application" bin ich ja selbst...
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |