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

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

1

25.01.2014, 16:28

Konstanten öffentlich zugänglich machen (Designproblem)

Moin :)

Ich suche, wie bereits im Titel beschrieben, nach einer Möglichkeit Konstanten öffentlich zugänglich zu machen. Da öffentliche Variablen und Singletons nicht zum "Guten Design" zählen, wüsste ich gerne, ob man die Konstanten dann einfach eine Klasse packt und als statisch deklariert oder ob es noch andere Möglichkeiten gibt.

Danke schonmal ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

2

25.01.2014, 16:46

Bei Konstanten kann von außen nichts Kaputt gemacht werden. Der einzige Nachteil ist, dass das Interface sich vergrößert und dadurch die Nutzung der Klasse minimal komplizierter ist. Wenn du sie unbedingt zur Verfügung Stellen musst spricht nichts dagegen. Wenn die Konstante bei allen Objekten gleich ist empfehle ich public static const.
"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?

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

3

25.01.2014, 16:54

Zitat

Der einzige Nachteil ist, dass das Interface sich vergrößert und dadurch die Nutzung der Klasse minimal komplizierter ist.

Damit kann ich leben :D

OK, danke, dann mache ich es so :)

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

4

25.01.2014, 17:06

Aber was mache ich bei Objekten? :hmm:

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

5

25.01.2014, 17:08

Wie meinst du das?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

6

25.01.2014, 17:12

Wenn die Konstanten doch Objektspezifisch sind und im Konstruktor initialisiert wird kannst du einfach das static weg lassen.
"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?

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

7

27.01.2014, 15:50

Nein, sie sind ja nicht objektspezifisch. Zum Beispiel möchte ich global ein std::string-Objekt haben, bei dem ich so weit ich weiß keinen In-Class-Initializer verwenden kann.
Wie würde ich das lösen? :)

EDIT: Ich meine Objekte, die mit Konstruktor initialisiert werden können/müssen.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

8

27.01.2014, 15:59

public static const std::string& Foo(){static std::string value("blah"); return value;}
Von globalen Konstanten würde ich die Finger lassen.
"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?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

27.01.2014, 16:08

Die Frage ist: Wieso sollten diese Konstanten "öffentlich zugänglich" sein und was genau verstehst du darunter eigentlich?

wluc-16

Treue Seele

  • »wluc-16« ist der Autor dieses Themas

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

10

27.01.2014, 16:37


public static const std::string& Foo(){static std::string value("blah"); return value;}

Ah, so etwas habe ich gesucht. Danke ;)


Die Frage ist: Wieso sollten diese Konstanten "öffentlich zugänglich" sein und was genau verstehst du darunter eigentlich?

Also ich teste seit längerer Zeit mal wieder mit OpenGL herum und da alle meine Konstanten (Größe des Fensters, Titel, etc.) einheitlich an einem Ort gesammelt werden sollen, habe ich halt nach einer Möglichkeit gesucht, sie aus jedem Modul "abzuholen".

Werbeanzeige