Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.01.2012, 16:09

Hat mich C# verblödet?

Unter o.g. reißerischen Titel möchte ich meine vielen Versuche, mich an die C++-Logik zu gewöhnen, bündeln.

Ich habe einige Anläufe hinter mir, ein vernünftiges "Programm" in C++ auf die Beine zu stellen.
Die Syntax ist mir völlig klar. Und die bereitet auch keine Probleme.

Aber ich stoße täglich auf irgendwelche Probleme, die letztendlich mit falscher Handhabung der Headerdateien und Zeigern zu tun haben, bei denen ich letztlich mehrere Minuten (mal auch eine Stunde) dran sitze, um herauszufinden, woran es liegt und wie ich es beheben kann. Ich kann mir auch irgendwie nie die Logik hintermauern, die Header-, Pointer etc. haben. Die Definitionen kenne ich, nur irgendwie kann ich da nicht viel draus in die Praxis umsetzen.
Das sind beides Dinge, um die ich mich in C# nicht kümmern muss. Ich programmiere seit vielen Jahren mittlerweile in C# und kann dort auch soweit alles, was mir je einfiel, umsetzen.
Aber versuche ich das in C++, schlagen mich o.g. Fehler nieder. Gerade jetzt sitze ich schon wieder an so einem Problem und frage mich, ob ich einfach ein verwöhntes C#-Kind bin, welches sich nicht an vernünftiges C++ gewöhnen kann.

Hat jemand von euch nach C# C++ gelernt? Hattet ihr da ähnliche Probleme, könnt ihr mir Brücken bauen? Gibt es vielleicht sogar ein Buch bzgl. C++ für C#-Eingefleischte?
Oder muss ich C++ vor C# gelernt haben und kann das jetzt mein Leben lang nicht kapieren (*übertreib*)?

Lernfaul bin ich ja nicht...

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

22.01.2012, 16:11

Das ist das, was ich immer wieder sage. Von C++ nach C# zu wechseln ist deutlich einfacher als Umgekehrt ;)

Aber nein so viel Schwarze Magie sind Headerdateien und Zeiger nun auch nicht, dass man sich nicht dran gewöhnen könnte.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

22.01.2012, 16:15

Wichtig ist, wenn man C++ als Zweitsprache lernt, dass man doch mehr oder weniger von vorne anfängt und ein gutes Einsteigerbuch benutzt. Vieles verhält sich, auch wenn es Oberflächlich gleich aussieht wie bei anderen Sprachen sehr anders und das bekommt man unter Umständen nicht mit über, wenn man "einfach mal drauf los programmiert". Da gibt es halt immer wieder Feinheiten, die man kennen muss und sonst hat man eben genau die Probleme, die du hast.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

22.01.2012, 16:15

Versuch nicht in C++ C# zu programmieren, damit wirst du nicht glücklich. Es sind eben doch zwei grundverschiedene Sprachen und C++ lernen braucht seine Zeit.
Ich hab damals mit VB 6 angefangen und hab es auch noch geschafft einigemaßen C++ zu lernen, also mach dir mal keine Sorgen ;)

5

22.01.2012, 16:21

Da magst du Recht haben, drakon - ich schreibe fröhlich meine Klasse um dann vor einem Fehler zu verenden wie "Der Ausdruck muss den Typ pointer-to-class aufweisen".
Ich überprüfe Namespaces, Pointer, Includes, Membervariablen, etc.... alles scheint richtig. Ich dreh durch und schließe wütend Visual Studio mit dem Vorsatz, es nie wieder zu öffnen.
Aber dann fühle ich mich 5 Minuten später wieder herausgefordert ("das kann doch nicht sein!") nur um dann wieder festzustellen dass die recherchierten, wirren Fehlerbeschreibungen im Internet mir beweisen, dass ich doch irgendwie gar keine Ahnung von C++ habe.

Allerdings habe ich mir schon zig Literaturbausteine gekauft wie z.B. "C++ Programmierung lernen" von Andre Willms, ein Buch für blutige Anfänger, was von "was ist eine Funktion" bis zur OO geht. Nachdem ich das Buch gelesen habe (und nebenbei natürlich auch Dinge ausprobiert habe) war ich total optimistisch, dass ich jetzt nur noch drauf los schreiben brauche... aber das war wohl nix, ich glaube, ich fange nochmal bei einfachen Konsolenprogrammen an, obwohl ich das so hasse :(

Ich kann nur nochmal einen Satz einer Antwort auf stackexchange zitieren, die mich zum Schmunzeln gebracht hat, weil es so wahr ist:
"The good thing about learning C++ from C#, is that they look very similar. The bad thing is that they look very similar."

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

22.01.2012, 16:23

[...] ich glaube, ich fange nochmal bei einfachen Konsolenprogrammen an, obwohl ich das so hasse :(

Was hast du denn so versucht zu programmieren, wenn das nicht in der Konsole war?

7

22.01.2012, 16:24

Anfangs habe ich schon simple Konsolenprogramme geschrieben (was blieb mir auch übrig). Zum Beispiel Maumau mit Textausgabe (yeah), auch mit Hilfe des Tutorials im Buch und dann mal mehrere Dateiformat-Leser, die Informationen über eine Datei x geben.

Nur seit letzter Zeit wollte ich mich mal ransetzen und die TriBase-Engine ausprobieren... das fiel mir schon extrem schwer, mein Spiel in sinnvolle Klassen aufzuteilen ("Spiel"... ich kam ja nichtmal weiter als eine First-Person-Kamera :(). Das soll nicht gegen die TriBase-Engine sprechen, sondern gegen mich. Habe auch mal eine andere Engine wie die SoftPixelEngine ausprobiert (die scheint mir sogar etwas leichter), aber selbst da wieder ähnliche Probleme wie o.g..

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

22.01.2012, 16:26

Ok. Wollte nur sichergehen dass du dich nicht zu WinForms oder sonstigem .NET Kram hast hinreißen lassen. Denn das ist nicht C++ sondern C++/CLI und davon würd ich an deiner Stelle auf jeden Fall die Finger lassen. Die Sprache ist von vornherein nur für ganz spezielle Dinge geeignet (GUI gehört nicht dazu) und kann auch einen erfahrenen C++ Programmierer sehr schnell in den Wahnsinn treiben...

Wenn du dich an einfachen Spielen versuchen willst, dann würd ich dir für den Anfang zu SFML raten.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (22.01.2012, 16:31)


9

22.01.2012, 16:32

Ja, diese WinForms / .NET-Mix Geschichte fand ich schon von Anfang an ekelig. Ich wollte mich endlich mal von diesem .NET-Zeugs trennen und anfangen, "richtig" zu programmieren (das soll jetzt .NET in seiner Power nicht beleidigen, aber in Sachen Code ist vieles dort doch Kindergarten).
Ich glaube, bei mir sind einige Grundpfeiler in C++-Kenntnissen eingeschlagen. Anfangs war ich mir noch recht sicher, was Header usw. angeht, aber nachdem ich viele Fehler diesbezüglich um die Ohren geschlagen bekommen habe, wurde ich mir dabei immer unsicherer (was nicht zuletzt darin endete dass ich C++-Bücher nochmal gelesen habe).
--> Deswegen (um jetzt auf deinen Rat bzgl. Spielentwicklung zurückzukommen, ich schweife ja gerne aus) würde ich Spiele erstmal doch ruhen lassen und vielleicht noch ganz ganz einfache, aber OO Konsolenprogramme schreiben wollen. Gibt es da vielleicht gute Tutorials?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

10

22.01.2012, 16:37

Also in deinem Fall würde sich "Die C++ Programmiersprache" (oder das Englische pendant) von Stroustrup (Erfinder von C++) anbieten um zu lernen. Er geht da teilweise recht ins Detail, aber die sind sehr nützlich zu kennen. Dann verstehst du all die komischen Fehler, die du jetzt hast. ;)

Werbeanzeige