Warum gibt es eigentlich kein private für Namespace?
-
Wäre das nicht praktisch, wenn es ein private für Namespaces geben würde? So das man Hilfs-Funktionen (die keiner Klasse zugeordnet werden können) "verstecken" kann.
-
was hätte das fürn sinn? jeder programmierer kann doch später den namespace wieder öffnen, seine eigene Klasse reinsetzen, und dann die "privaten" elemente benutzen.
was ich manchmal mache, ist sowas:
namespace FooBar{ namespace Private{ //hier das, was nicht unbedingt sichtbar sein sollte } //nach aussen hin sichtbarer code }
-
Sorry wenn ich jetzt mit 'ner Frage dazwischenschieße, aber das paßt hier einfach zu gut her.
Ist eine Verschachtelung von Klassen eigentlich sinnvoll? Z.b, wenn ich eine Klasse habe, die ich in einer anderen Klasse verwende und nur dort:
class A { class B { B(); }; //Using some stuff of B here.... };
Dafür spricht IMO, das eindeutig ersichtlich ist, wo Klasse B gebraucht wird, oder ist dort die Benutzung von namespaces sinnvoller? Häßlich ist dann allerdings bei der Implementierzung A::B::B(){ }..
-
@Pi-age
für solche Sachen hab ich immer einen namespace helper { } oder je nachdem einen anonymen-NamespaceSo ein vorgehen find ich auch besser, als irgend ein komplexes System den Namespaces hinzuzufügen.
@TheBigW
ja, Klassen in Klassen sind Sinnvoll. Klassen in Funktionen können auch sinnvoll sein.
-
Pi-age schrieb:
Wäre das nicht praktisch, wenn es ein private für Namespaces geben würde? So das man Hilfs-Funktionen (die keiner Klasse zugeordnet werden können) "verstecken" kann.
Das kann man bereits. Man definiert die Hilfsfunktionen einfach in einem anonymen Namespace in einer cpp-Datei. Fertig.
Ist eine Verschachtelung von Klassen eigentlich sinnvoll? Z.b, wenn ich eine Klasse habe, die ich in einer anderen Klasse verwende und nur dort:
Wenn eine Klasse ein Implementationsdetail einer anderen Klasse ist, dann solltest du sie durchaus als nested-class implementieren (Beispiel: class Node einer Klasse List).
-
Klassen zu schachteln kann durchaus sinnvoll sein.
class Rad { private: class Speiche { ... } ... };
Vielleicht wird die Klasse Rad zu unübersichtlich, dann kann es schon Sinn machen, einen Teil davon in die Klasse Speiche auszulagern. Die kann sogar ihr Zeug nochmal kapseln dann.
Wenn kein Mensch jemals eine Speiche brauchen sollte, dann würde ich sie verstecken.