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

Jens

Treue Seele

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

11

12.08.2003, 23:41

das ist ein Fall für ein Macro

da hierfür keine Typsicherheit verlangt wird, würde ich das in einem Macro zusammenfassen, um ständige Funktionssprünge zu vermeiden.

Sehe ich das falsch?

12

12.08.2003, 23:48

Das siehst du falsch. Woher willst du wissen welchen Rückgabetyp die Funktion hat, die dem Makro dann übergeben wird.
Und um Funktionssprünge zu vermeiden, gibts ja noch das gude alde inline :) .

Besser wäre es vielleicht so:

Quellcode

1
2
3
4
5
6
7
template<class Type> inline void CheckReturnValue(Type FunctionReturnValue, 
                                                  Type ErrorCode, 
                                                  const std::string &ErrorText) 
{ 
    if(FunctionReturnValue == ErrorCode) 
        LogError(ErrorText); 
}


Boah ist das jetzt Typensicher :-D
Ein Gespenst geht um in Europa...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

13

13.08.2003, 01:44

Da kannste auch gleich eine bool-Variable übergeben und das ganze Template wird überflüssig:

Quellcode

1
2
3
4
5
6
7
inline void Check(bool Condition, 
                  const std::string &ErrorText) 
{ 
    if(Condition) LogError(ErrorText); 
}

Check(FAILED(D3DDevice->SetRenderState(D3DRS_ZENABLE, TRUE)), "Microsoft baut nur Mist!");

14

13.08.2003, 09:57

Allerdings benutzen wir dann wieder ein Makro: FAILED.
Ein Gespenst geht um in Europa...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

13.08.2003, 10:00

Das kannste aber auch wieder ganz leicht in eine Funktion umschreiben.

16

13.08.2003, 10:02

Achja, dann hben wir ja wieder das selbe Problem. Es wird nur mit eniem Typ funktionieren.
Ein Gespenst geht um in Europa...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

13.08.2003, 12:51

Nein, Du kannst doch auch die Failed-Funktion als Template-Funktion machen, wenn Du willst. Dann spezialisierst Du die Template-Funktion für z.B. HRESULT oder was es sonst noch so an Rückgabetypen geben könnte.
Mal ganz davon abgesehen, dass das, was wir hier diskutieren, niemand in seinem Code benutzen würde (schätze ich zumindest mal) ...

18

13.08.2003, 22:58

Ich könnte jetzt zwar FAILED auch als Template-Funktion schreiben, aber dann hätten wir eine schönen Umweg gemacht.
Aber egal, belassen wirs dabei
Ein Gespenst geht um in Europa...

Werbeanzeige