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

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

11

22.04.2011, 10:28

es geht nicht darum, dass du anfänger bist, deswegen wird niemand etwas sagen, sondern, dass du das lernen falsch angehst.

- gibst du den button auch wieder frei?
- wieso verwendest du wieder eine struct? in TButton solltest du den zeiger auf null setzen. auch structs können konstruktoren besitzen.
- das image befindet sich wieder direkt über dem sprite. so musst du für jeden button das image neu laden. das ist langsam und frisst speicher.
- was spricht dagegen die buttons von einer menüklasse verwalten zu lassen.
- für buttons sollte std::vector performanter sein
- in der regel nutzt man push_back damit buttons die man später hinzufügt auch später geupdatet und gezeichnet werden. beim std::vector hast du sowieso keine andere wahl.
- bei der methode getSprite gibst du eine kopie zurück, dabei wäre hier eine referenz auf const angebracht. eine drawmethode die eine referenz aufs window entgegennimmt wäre hier aber sowieso schöner.

kann man wieder alles in einem guten einsteigerbuch nachlesen.

liest du überhaupt deinen eigenen thread? oO wenn ich mir diese zeile anschau scheint es nicht so:

C-/C++-Quelltext

1
TButton _TButton;

Dem Unterstrich darf bei einer Membervariable also kein Großbuchstabe folgen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (22.04.2011, 10:57)


CodeBase

Treue Seele

  • »CodeBase« ist der Autor dieses Themas

Beiträge: 98

Wohnort: Österreich -> Salzburg

Beruf: Datenbank Entwickler

  • Private Nachricht senden

12

22.04.2011, 10:54

Ja ok sry habe ich übersehen, habe es geändert.
Wie meinst du das mit eine Refernz zurück geben ? Kannst mir das mal an einem CodeBsp. zeigen ?

Ja struct werfe ich jetzt dann raus habe mir das nochmal überlegt und du hast recht ist sinnlos. Naja ist es nicht so wenn ich den aus der List lösche das der dann von selber freigegeben wird ?

Bitte wäre sehr nett

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

22.04.2011, 11:03

habs nochmal editiert. vorallem wegen der lesbarkeit.
codebeispiele findest du mit sicherheit in deinem einsteigerbuch.
bitte denke nicht, dass ich ungern fragen beantworte.(sonst hätte ich ja wohl nicht so viele beiträge^^) mir gehts darum, dass du ein bisschen C# und java programmieren kannst und denkst du könntest ohne ein buch durchzuarbeiten C++ lernen. das funktioniert aber nicht weil C++ viel zu komplex ist. du siehst ja selbst wieviele dinge es zu beanstanden gibt. bei vereinzelten fehlern und verständnissproblemen helfe ich gerne, wenn ich sehe, dass derjenige sich mindestens so viel mühe beim lernen gibt wie ich beim beantworten der fragen.

Naja ist es nicht so wenn ich den aus der List lösche das der dann von selber freigegeben wird ?

nicht wenn du den speicher mit new anforderst. das kannst du auch nachlesen^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

CodeBase

Treue Seele

  • »CodeBase« ist der Autor dieses Themas

Beiträge: 98

Wohnort: Österreich -> Salzburg

Beruf: Datenbank Entwickler

  • Private Nachricht senden

14

22.04.2011, 11:16

Hmm naja ich habe ja ein Buch und es ist nicht so das ich sage "ach wenn ich mal ned weiter weiß, irgendwer wird es schon sagen wie es geht". Ich bin ja bereit zu lernen und ist ja nicht so das ich eine Komplette nudel auf dem Gebiet bin :).

Ich lerne mir halt einfacher wenn ich das ganze gleich umsetzte alleine vom lesen lerne ich nicht, das kann ich nicht. Ich bin ja bereit zu lernen und auch dabei nur wie gesagt es ist noch kein meister vom Himmel gefallen und sry wenn ich das jetzt so sage aber DU hast auch mal angefangen das ganze zu lernen :)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

15

22.04.2011, 11:25

Ich kann dir natürlich ein Codebeispiel zeigen und sagen, dass du statt:

C-/C++-Quelltext

1
2
3
4
sf::Sprite Button::GetSprite()
{
return Sprite;
}


lieber

C-/C++-Quelltext

1
2
3
4
const sf::Sprite& Button::GetSprite()
{
return Sprite;
}


verwenden solltest, da ersteres eine Kopie des Sprites erstellt und letzteres eine Referenz auf ein konstantes Objekt zurückliefert. Vorstellen kannst du dir das im Grunde so, dass du, statt dir ein eigenes neues Buch zu kaufen, mein eigenes Buch bekommst. Das hat den Vorteil, dass du nicht extra in den Laden laufen musst, ein neues Buch bestellen etc., sondern dass du einfach meines benutzen darfst. Würde ich dir das Buch nicht unter dem Vorbehalt geben, dass du nicht darin rumschmieren darfst(const), dann könntest du auch Notizen in das Buch machen und wenn ich dann mein Buch lesen will, dann sehe ich dein Gekrakel im Buch ;).
Nur ist die Frage, ob dir das jetzt so viel bringt, wenn man dir einfach irgendwelche fortgeschritteneren Themen erklärt, wenn du die Grundlagen auch noch nicht beherrschst.

Und noch ein Wort zu Sprites und Images. Die Sprite-Klasse existiert genau aus dem Grund, um das speicherintensive Image, auszulagern. Wenn du beides zusammen in einer Klasse verwendest ist das nicht der Sinn, der hinter dem ganzen steht(Theoretisch würde ja auch eine Sprite-Klasse reichen, die ihr Image selbst lädt). Häufig ist es ja auch so, dass Bilder von mehreren Objekten genutzt werden. Da wäre es ziemlich dämlich, wenn jedes dieser Objekte sein eigenes Bild lädt und im Grunde doch alle das gleiche benutzen.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

16

22.04.2011, 11:29

sry wenn ich das jetzt so sage aber DU hast auch mal angefangen das ganze zu lernen :)

eben, ich hab das alles durch und weiß, dass man nicht versuchen sollte den mount everest zu besteigen bevor man sich angeschaut hat wie man ein zelt aufschlägt oder ein seil benutzt.
als praktische übung eignen sich in deinem stadium kleine übungsprogramme in der konsole am besten. grafikprogramme sind nicht geeignet weil sie, im gegensatz zu konsolenprogrammen, noch eigene probleme mit bringen und man oft nicht direkt sieht was sich in dem programm ändert.

dir fehlt ganz klar theorie.(schon allein das mit dem dem speicher freigeben, woran jeder C++ programmierer, immer denken sollte wenn er new benutzt)
keiner deiner fehler in den codes zeugt von zu wenig praxischer erfahrung^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (22.04.2011, 11:35)


Werbeanzeige