Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Neue Woche, neues Problem!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.08.2006, 20:17 Uhr
~Blubber2063
Gast


Das liegt an deinem Standardkonstruktor für B, lass das instantieren des Strings im Konstruktor, ist eh sinnlos, dann funktioniert es auch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.08.2006, 21:19 Uhr
Yadgar



High!


Zitat von ~Blubber2063:
lass das instantieren des Strings im Konstruktor, ist eh sinnlos


Wieso?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.08.2006, 21:25 Uhr
~Blubber2063
Gast


Na was hast du davon du instantierst einen leeren String, das ist auch der Grund warum dein Programm abstürzt, du übergibst statt einem leeren String oder dem String 0, einen 0 Zeiger.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.08.2006, 21:33 Uhr
ao

(Operator)



Zitat von Yadgar:
Die (vorher, als Beispiel für eine "konventionelle" Lösung des Konversionsproblems, programmierte) Konvertierung per Funktion "fromAToB" ...

Die ist nicht "konventionell", die verwendet bereits den Konvertier-Konstruktor, und zwar hier:

C++:
B result(a_in);



Zitat:
kann nicht noch mehr Lernzeit verlieren

Du wirst so lange Zeit verlieren und dich verzetteln, bis du dir eine funktionierende Toolchain schaffst, kapier das endlich. Zum Programmieren gehört mehr als nur mit der Sprache zurechtzukommen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.08.2006, 22:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Du wirst so lange Zeit verlieren und dich verzetteln, bis du dir eine funktionierende Toolchain schaffst, kapier das endlich.


Da bin ich komplett anderer Meinung.

Dieses ganze "trimm die Klasse bis ins letzte Gedöns" brauchst du für nen 1-Mann Projekt doch sowieso nicht. Das ist imho pure Zeitverschwendung. Da kann man sich mit ner paar 3 Zeiler funktionen deutlich schneller behelfen und erstmal "inhaltlich" arbeiten und testen. Wenn man dann nen Prototypen hat, kann man immer noch ein tolles "Design" draus basteln... Dieser Top-Down ansatz gleich alles beim ersten mal richtig machen zu wollen (bzw. wenn das Ding versemmelt ist bis zum Ende mit seinen Designfehlern leben zu müssen) hat man bei so nem kleinen Projektchen nicht. Hinzu kommt, das man ja weder großen zeitlichen noch finanziellen Druck hat...

Lerning by Doing macht in jedem Falle mehr Spaß als sich erst nen abgehobenes Konstrukt aufzubauen, mit dessen Umsetzung man ersten als Anfänger völlig überfordert ist und zweitens schnell die Lust verliert weil Erfolge sich nicht einstellen wollen.

Ich würde mich zwar nie mit größen wie ao, virtual und Co messen wollen. Abgesehen von der Berufserfahrung steckt da ja auch noch deutlich mehr "theoretisches Wissen" hinter. Alleine schon deswegen nicht weil ich fachlich und inhaltlich von C/C++ nicht wirklcih Ahnung habe, sondern das ganze alles so ein bisschen "Freestyle" ausprobiere.... Wenn man nicht gerade großer Projektleiter xyz werden will brauch man das auch gar nicht... An sonten wenn das dein Ziel sein sollte, ist der Zug imho für dich abgefahren. Für jemanden der zuarbeitet brauch man eigentlich kein "Softwaregott" aller theoretischen Konstrukte einer Sprache sein...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.08.2006, 22:53 Uhr
Spacelord
Hoffnungsloser Fall


Was Hänschen nicht lernt,lernt Hans nimmermehr.....
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.08.2006, 23:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)




neues Rätsel: Warum lag ich eben 5 Minuten trommelnd auf dem Boden. (Ich gebe zu es war ein krasser Spätzünder aber ich bekomme mich trotzdem nicht mehr ein...)
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.08.2006, 23:22 Uhr
ao

(Operator)



Zitat von Windalf:
Dieses ganze "trimm die Klasse bis ins letzte Gedöns" brauchst du für nen 1-Mann Projekt doch sowieso nicht. Das ist imho pure Zeitverschwendung ...

Mit "Toolchain" meine ich nicht Klassenentwurf, sondern dass die Entwicklungswerkzeuge (Debugger, Logfile-Generator etc.) reibungslos funktionieren müssen. Das ist immer wichtig, egal wie groß oder klein das Projekt ist.

Niemand findet was dabei, drei Tage lang nach einem Access-Violation-Fehler zu suchen, das wird für völlig normal gehalten. Aber drei Tage Einarbeitung in den Debugger gilt als pure Zeitverschwendung, auch wenn man dabei viel mehr lernt, viel weniger Nerven investiert und die Access Violation quasi nebenbei in fünf Minuten findet. Komisch.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.08.2006, 00:08 Uhr
Yadgar



High!


Zitat von ao:

Niemand findet was dabei, drei Tage lang nach einem Access-Violation-Fehler zu suchen, das wird für völlig normal gehalten. Aber drei Tage Einarbeitung in den Debugger gilt als pure Zeitverschwendung, auch wenn man dabei viel mehr lernt, viel weniger Nerven investiert und die Access Violation quasi nebenbei in fünf Minuten findet. Komisch.



Liegt vielleicht auch an meiner, ich nenne es mal prekären Persönlichkeitsstruktur... da ich immer von der schlimmstmöglichen Situation ausgehe, nehme ich bis auf weiteres a priori an, dass es für mich , da ich nun nach IT-Maßstäben wirklich nicht mehr der Jüngste bin, jetzt allerhöchste Eisenbahn ist, noch ribbeldikatz C++ (und C#, und Java, und SQL, und, und, und...) zu lernen, da ich andernfalls nur noch die Perspektive "lebenslänglich Hartz IV" habe (von den Horrorszenarien, die ich mir in diesem Zusammenhang bei weiterer Verschärfung der Sozialpolitik in diesem, unserem Lande vorstelle, mag ich jetzt gar nicht reden...) - und ich mir folglich Verzögerungen und Durchhänger einfach nicht mehr leisten kann! Wenn ich nicht jeden Tag wenigstens 30 Seiten in meinen Lehrbüchern vorankomme, fühle ich mich hundeelend... heute habe ich z. B. ganze 7 Seiten geschafft!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: