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

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

11

02.12.2010, 18:56

Also Faustregel: Nie inline und nie im Memberfunktionen im Header definieren.

Beim inlinen stimme ich dir zu, aber einfache Memberfunktionen kann man schon auch gleich im Header (also bei der Deklaration) definieren. Vor allem getter und setter sind meist so implementiert.

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

12

02.12.2010, 18:56

Ich würde zudem nie eine Memberfunktion im Body definieren (außer evtl ganz simple einzeilige GETter, SETter schon lieber nicht), da das zu schwierig lokalisierbaren Linkerfehlern führen kann (á la "X is already defined in Y.obj") und das trotz include-guards.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

02.12.2010, 18:59

trotz include-guards.

Include Guards (generell Makros) existieren beim linken nicht. Um genau zu sein kennt bereits der Compiler keine Makros mehr. Das ist die Sache des Präprozessors.

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

14

02.12.2010, 19:02

Ich würde zudem nie eine Memberfunktion im Body definieren (außer evtl ganz simple einzeilige GETter, SETter schon lieber nicht), da das zu schwierig lokalisierbaren Linkerfehlern führen kann (á la "X is already defined in Y.obj")

Und warum genau sind Getter dafür weniger anfällig? (außerdem kommt multiple definition nie vor, wenn du eine Funktion im Klassenbody definierst. Weil's eben implizit inline ist.)
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

02.12.2010, 19:09

@BlueCobold
Sehr hilfreich!
Ne mal im Ernst. Was hat das gebracht?

Sehr nett. Mal im Ernst, fällt dir kein Grund ein? Ich habe etwas geschrieben und wieder gelöscht, weil es Unfug war. Da ich meinen Beitrag aber nicht löschen kann, blieb mir nur ihn zu editieren.
Dieses automatische Rumgepöbel is echt assi und das kannst du dir beim nächsten Mal schenken. Danke.
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]

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

16

02.12.2010, 19:12

Okay, sagen wir nie; Allerdings kommt das Problem häufiger vor, wenn man Funktionen/Klassen aus externen Dateien verwendet.

Aber mit einem Getter wie

C-/C++-Quelltext

1
bool getIsAlive(){return isAlive;}
hatte ich noch nie Probleme ;)

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

17

02.12.2010, 19:58

Vielan Dank für eure Antworten ;)
Ich werde mir einfach eine persönliche Faustregel machen:
Nie inline und nie im Header definieren.
Scheint so am sichersten zu sein ^^

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

18

02.12.2010, 20:37

Genau. Im prinzip ist die antwort auf den Threadtitel schlicht und einfach: nein.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

02.12.2010, 23:05

inline/Definition im Header lohnt sich definitiv wenn man es richtig einsetzt.

20

02.12.2010, 23:40

@dot:

Kannst du uns ein Beispiel geben? Wofür lohnt sich das deiner Meinung nach?


Gruß
SaRu_

Werbeanzeige