Du bist nicht angemeldet.

Werbeanzeige

RmbRT

Treue Seele

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

441

26.08.2014, 01:02

C-/C++-Quelltext

1
2
3
4
5
6
7
/*Delete all States that have finished executing after this update().*/
while(!empty() && states[states.size()-1]->isFinished())
{
    /*This deletes the State.
    Remember: States must be allocated on Stack (via new).*/
    popState();
}
"Dumm ist, wer dummes tut."

FSA

Community-Fossil

  • Private Nachricht senden

442

26.08.2014, 02:42

Peinlich :P

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veralteten strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

443

26.08.2014, 07:07

Bin ich irgendwie übermüdet oder warum sehe ich das Problem nicht?

Also ich sehe natürlich, dass size() statt empty() eine dusselige Wahl ist. Ich sehe, dass die StateMachine::empty()-Methode völlig überflüssig ist. Ich sehe, dass ein Vektor als Stack missbraucht wird statt gleich einen Stack zu nehmen. Und ich sehe, dass eine Statemachine als Stack implementiert wird, obwohl das dafür die total falsche Datenstruktur ist. Aber ich sehe keinen Grund für eine Zugriffsverletzung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlueCobold« (26.08.2014, 07:29)


444

26.08.2014, 08:16

Bin ich irgendwie übermüdet oder warum sehe ich das Problem nicht?
states.size() wird von integer in bool konvertiert. Wenn jetzt states.size() 0 ist kommt anschließend false raus, d.h. die Funktion gibt genau das Gegenteil an, nämlich, dass der Vektor nicht leer ist.

C-/C++-Quelltext

1
while(!empty() && states[states.size()-1]->isFinished())

Hier wird anschließend auf states[-1] zugegriffen, da empty() angibt, dass der Vektor voll ist, states.size() aber 0 zurückgibt.

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

445

26.08.2014, 08:24

die Funktion gibt genau das Gegenteil an
Oh, of course. Ich geh' mir mal 'nen Kaffee holen ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Legend

Alter Hase

Beiträge: 737

Beruf: Softwareentwickler

  • Private Nachricht senden

446

26.08.2014, 09:10

Findet den keiner den Kommentar so geil wie ich?

Remember: States must be allocated on Stack (via new).
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

447

26.08.2014, 11:29

Zitat

Aber kann ich nicht so recht nachvollziehen.

C-/C++-Quelltext

1
while(!empty() && states[states.size()-1]->isFinished())

In dem Fall ist empty eine eigene Methode und daher nicht zu verwechseln mit std::vector<Ty>::empty().
Erstere gibt true zurück, wenn states.size() > 0 und false, wenn states.size() == 0. Wenn das jetzt wieder negiert wird (!empty()), ist diese Bedingung wahr, wenn states.size() == 0. Dann wird auch die zweite Bedingung (states[states.size()-1]) überprüft und folglich greift man dort auf states.size() - 1 also 0-1 zu -> Bämm. ;)
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

RmbRT

Treue Seele

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

448

26.08.2014, 11:40

@Legend: ich meine natürlich RAM *hust* habe das gute Stück um 2 uhr nachts geschrieben :D

MfG,
RmbRT
"Dumm ist, wer dummes tut."

FSA

Community-Fossil

  • Private Nachricht senden

449

27.08.2014, 22:35

Hahah :D Ich rufe heute die neuste Version des Quellcodes ab und mein Teamkollege hat folgendes hinterlassen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
try
{
   // Do something
}
catch(lvm_ThreadError& e)
{
    lvm_ASSERT("That's weird. It worked on my machine!");
}

Anzumerken ist noch, dass lvm_ThreadError bei Threads bzw. race condition auftreten kann :thumbsup:

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veralteten strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

450

31.08.2014, 17:09

Alter, das hat mir stunden debugging beschert: :dash:

C-/C++-Quelltext

1
typedef char int32;

Besonders, wenn man ein eigenes OS schreibt :D

Werbeanzeige