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

11

17.03.2012, 21:08

In A hab ich nur ein class B; stehen dann werd ich die B.h auch erst in der C.cpp inkludieren.
greate minds discuss ideas;
average minds discuss events;
small minds discuss people.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

12

18.03.2012, 14:44


- Wenn man eine Instanz der Klasse als Member benutzt oder als Parameter (by Value)

Für Parameter braucht man die Definition nicht.

Ansonsten habe ich die gleichen Punkte auch im verlinkten Artikel genannt. ;)

13

18.03.2012, 21:15

Forward Declarations machen auch dann Sinn, wenn Abhängigkeiten zwischen Dateien aufgehoben werden sollen, das kann bei Bibliotheken beispielsweise schon als einziger Grund genügen, sie zu verwenden. So kann man zum Beispiel Klassen teils modifizieren, ohne gleich jede einzelne Datei, die die Klasse verwendet, neu kompilieren zu müssen.

14

18.03.2012, 23:18

Man sollte halt IMMER dann forward declarations benutzen, wenn sie reichen. Genauso wie man IMMER const benutzen sollte, wenn es möglich ist. Oder Methoden statisch machen sollte, wenn sie auf keine Member zugreifen. Oder Variablen so lokal wie möglich halten sollte. Alles mehr oder weniger das selbe Prinzip, also erhöhen von Effizienz oder vermeiden von Fehlern.
Lieber dumm fragen, als dumm bleiben!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

18.03.2012, 23:42

Man sollte halt IMMER dann forward declarations benutzen, wenn sie reichen. Genauso wie man IMMER const benutzen sollte, wenn es möglich ist.

Prinzipiell ist das eine gute Daumenregel. Aber ich find es eher unangenehm wenn ich z.B. eine kleine Library hab und dann ist da eine Klasse die Hand in Hand mit einer anderen Klasse geht und ich will sie verwenden, kann ich aber nicht, bevor ich mich durch die ganzen Header gewühlt hab um rauszufinden, was ich für diese zweite Klasse noch inkludieren muss.

Darum halt ich es z.B. bei Interfaces eher so, dass deren Header direkt die Header aller anderen benötigten Interfaces inkludieren, was der Compiletime nicht besonders schaden sollte, das ganze aber sehr viel angenehmer zu benutzen macht.

Oder Methoden statisch machen sollte, wenn sie auf keine Member zugreifen.

In dem Fall würd ich mir zuallererst mal überlegen, ob das überhaupt eine Memberfunktion sein soll ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

19.03.2012, 07:11

Kann dot nur zustimmen. Ich bin kein Freund von übermäßigen Forwards, weil man dann echt keinen guten Überblick mehr hat und der Code schwer zu warten ist (gerade wenn es nicht der eigene ist). Zirkuläre Abhängigkeiten sind meiner Meinung nach auch oft Hinweis auf ein schlechtes Design.

Statische Methoden sehe ich auch wie dot, denn wenn sie auf keine Member zugreifen, dann sind es sehr oft entweder Utility-Funktionen oder Factory-Methoden. Ersteres sollte man auslagern, bei letzterem kann man drüber nachdenken. Ich werfe mal "Lack of Cohesion" in diesem Zusammenhang mit in den Raum ;)
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]

17

19.03.2012, 08:41

Also zu Utility-Funktionen kann ich mir noch as zusammenreihmen aber was sollen Factory-Methoden sein?
greate minds discuss ideas;
average minds discuss events;
small minds discuss people.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

18

19.03.2012, 10:46

Ich würde meinen sowas hier.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

19

19.03.2012, 12:05

Jopp

20

19.03.2012, 15:43

Zitat von »Jonathan_Klein«
Oder Methoden statisch machen sollte, wenn sie auf keine Member zugreifen.

In dem Fall würd ich mir zuallererst mal überlegen, ob das überhaupt eine Memberfunktion sein soll
Ja, denn kapseln macht immer Sinn. :P

[EDIT]; ":P" bedeutet bei mir meist Sarkasmus, nur, dass das hier keiner in den falschen Hals bekommt. ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sound~Wave« (19.03.2012, 16:14)


Werbeanzeige