Member Variable Zugriff in verschachtelten Klassen??



  • BorisDieKlinge schrieb:

    kann ich nun über ein System Objekt auch auf die funktionen der interen modulklassen zugreifen??

    Klar, wenn du ein Element der entsprechenden Modulklasse im System anlegst (z.B. könnte die Klasse 'Printer' im obigen Beispiel auch ein Modul sein).

    wieso hast du das modul als friend deklariert?

    Damit es auf die privaten Elemente des Systems zugreifen kann.



  • CStoll schrieb:

    Damit es auf die privaten Elemente des Systems zugreifen kann.

    Das kann es sowieso, weil es eine interne Klasse ist.



  • schorsch code schrieb:

    Das kann es sowieso, weil es eine interne Klasse ist.

    WMKAHEMDFH 😉



  • MFK schrieb:

    WMKAHEMDFH 😉

    Also KEINE Ahnung finde ich übertrieben. Immerhin habe ich es sowohl mit g++ (sogar mit -pedantic Option) als auch mit VC++2005 ausprobiert. Ok, vielleicht ist es trotzdem nur eine Compiler-Eigenheit, welche die beiden Compiler gemeinsam haben; hab den Standard leider nicht zur Hand.



  • Mein Fehler, hatte die innere und äußere Klasse vertauscht.

    schorsch code schrieb:

    Also KEINE Ahnung finde ich übertrieben.

    Ich auch. Deswegen war ja auch ein Ironie-Smily dran. Bitte nicht so ernst nehmen 🙂



  • BorisDieKlinge schrieb:

    naja ich hab quasie ne Systemklasse, welche die verschieden Modul Klassen die zusammen das system ergeben zusammenfassen soll.. deswegen hätt ich gern so ne grouppierung.. mach mal ein beispeil CStoll!!

    Hi,

    also mal ganz abseits des bisherigen Trends: Das klingt für mich eher nach einem namespace als nach einer Klasse.
    Ich frage mich, ob das nicht eher eine Lösung für Dein Problem wäre. Innerhalb des Namespaces könntest Du ebenfalls lustig Konstanten, Objekte&Co ablegen, die von allen Klassen sichtbar sind (ebenso "globale Objekte" in einem anonymen namespace)....

    Denk' das doch mal durch...

    Gruß,

    Simon2.



  • hmm simon2... das hört sich gar nich so schlecht an, aller dings weis ich nicht wie da mit namespaces funktiniert!!



  • Hallo

    Siehe zum Beispiel hier.

    bis bald
    akari



  • BorisDieKlinge schrieb:

    hmm simon2... das hört sich gar nich so schlecht an, aller dings weis ich nicht wie da mit namespaces funktiniert!!

    Naja, ich weiß nicht wirklich, ws Du genau vorhast, aber "Bündeln" kann man in namespaces prima:

    namespace Group{
    
        namespace { 
            // anonymer namespace sorgt dafür, dass die außerhalb 
            // des namespaces&Moduls nicht zu sehen sind
            int internesZeug;
        }
    
        namespace Constants {
            const int MeineKonstante;
        }
    
        class A {  
        public:
            static void funktion() { internesZeug++; }
        };
        class B{
        public:
            static void funktion() {internesZeug--; }
        };
    
        // eigentlich brauchst Du nichtmal eine Klasse:
        namespace lustigeToolFunktionen {
            void f1() { internesZeug = 0; }
        }
    
        funktion() {
            B::funktion(); 
            A::funktion();
            internesZeug *= Constants::MeineKonstante; // kannst auch direkt nutzen
        }
    }
    
    using Group::B::funktion;
    
    int main() {
        Group::lustigeToolFunktionen::f1();
        Group::funktion();
        Group::A::funktion();
        funktion(); // ruft Group::B::funktion() auf
        return 0;
    }
    

    Nur mal ein wenig "rumgefuddelt" mit namespaces und Klassen.
    Wichtig: Möglichst nur dann eine Klasse bauen, wenn es sie wirklich Objekte beschreiben soll !
    (so gesehen sind meine obigen A und B "schlechte Klassen")

    Gruß,

    Simon2.



  • hmm ja das ist das problem .. meine module werden nur einmal erzeugt, und fassen eigentlich diverse funktionen und parameter zusammen...

    was ist denn eleganter namespaces oder singelton patterns??



  • dan würdest du statt der klassen A und B die wieder rum in ein namespace verpacken?



  • BorisDieKlinge schrieb:

    hmm ja das ist das problem .. meine module werden nur einmal erzeugt, und fassen eigentlich diverse funktionen und parameter zusammen...

    was ist denn eleganter namespaces oder singelton patterns??

    Das sind eigentlich keine Alternativen ... es geht eigentlich um die Frage "Globale Variable oder Singleton"; beide kannst Du sowohl in namespaces organisieren (was ich für schlau hielte)als auch ohne.
    Ob sich ein singleton lohnt, mag ich nicht beurteilen, aber es gibt zum Thema "Globale Variablen vs Singleton" schon Einiges in diesem Forum zu finden.

    Gruß,

    Simon2.


Anmelden zum Antworten