ordnung schaffen in klassen



  • hi,
    ich habe eine etwas größere klasse in der ich etwas ordnung schaffen will. ich will die attribute etwas einteilen und dachte mir dass würde mit strukturen ganz gut gehen, jetzt hab ich dabei nur ein paar probleme: wenn ich mit strukturen arbeite muss ich für jede struktur ein objekt innerhalb der klasse erstellen, ich kann aber nicht sicher gehen ob ein benutzer meiner klasse jetzt nicht noch ein weiteres objekt der struktur erstellt und so mit den falschen werten arbeitet. also hab ich mir gedacht ich mach die attribute der strukturen einfach statisch, aber so hab ich dann das problem dass wenn man mehrere objekte der klasse erstellt immer mit den selben werten/attributen arbeitet, was natürlich nicht sein darf. gibt es eine möglichkeit das die attribute nur innerhalb der klasse statisch sind (hoffe man versteht was ich meine...)? oder vielleicht irgendwelche alternativen, namespace kann man ja leider innerhalb von klassen nicht benutzen...

    class BF
    {
       public:
       .
       .
       .
       private:
       .
       .
       struct options
       {
          static bool ...;
          static ...
       };
    };
    

    danke im vorraus



  • Du machst die structs innerhalb der Klasse einfach private, dann kann man nur innerhalb der Klasse Objekte dieser privaten Strukturen anlegen. Auch in Ableitungen der Klassen kann niemand auf diese struct zugreifen.

    Damit ist dieses Problem damit lösbar.



  • Original erstellt von Marc++us:
    **
    Damit ist dieses Problem damit lösbar.**

    äh?
    😃

    wieso darf man sich eigentlich den :: operator nicht überladen? (mal naiv in die runde frag)



  • gegenfrage: warum sollte man das tun wollen?



  • <bla> würde das anscheinend helfen



  • @japro: so unüblich finde ich das auch wieder nicht - vielleicht nicht gerade mit structs, aber wenn ich sicher weiß, daß ich eine Klassenhierarchie aufbaue, wo Klassen enthalten sind die ich nur als Objekte in dieser Hierarchie benutzen will und kann - dann mache ich diese Klassen durchaus auch mal private. Niemand außer der obersten Klassen kann dann davon Objekte anlegen.

    Die Klasse wird nur schreibtechnisch davon aufgebläht, grundsätzlich bleibt sie immer noch schlank (wenige Memberobjekte und Methoden). Den gleichen Zweck kann ich mit Namespaces nicht erreichen, weil diese nur den Namen qualifizieren, aber keine Zugangskontrolle enthalten.


Anmelden zum Antworten