Auf private membervariable zugreifen?



  • Hi zusammen

    Gibt es in C++ irgendeine möglichkeit auf eine private membervariabel im main zuzugreifen, ohne eine memberfunktion zu verwenden?

    Z.B

    #include "CSerialPort.h"
    #include <fstream>
    #include <direct.h>
    using namespace std;
    
    //-----------------------------------------------------------------------------
    class CFlukeReader
    {
    
    public:
    	void SetIsVerboseMode(BOOL verboseEnabled);
    
    private:
    	BOOL m_isVerboseModeEnabled;
    };
    

    nun möchte ich im main die variable "BOOL m_isVerboseModeEnabled" verwenden.

    Ist das möglich?



  • Hallo TTS,

    naja, das ist ja gerade der Sinn von Sichtbarkeiten, dass man den Zugriff beschränken kann. Dir bleibt wohl nur der "Umweg" über eine entsprechenden Getter. Aber du kannst im Getter ja auch Sicherheitsabfragen o.ä. implementieren um sicherzustellen, dass der Zugriff auch erlaubt ist.

    Viele Grüße,
    MaBa



  • BTW: Falsches Forum, korrekt wäre C++.



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ (auch C++0x) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn du keinen allgemeinen getter deklarieren willst, und nur main da hinkönnen soll, deklarier doch main als friend deiner Klasse.
    Aber für mich schaut das so aus, als wäre es unnötig. dieser BOOL stellt deinen READER wohl auf Debug (soll ausführliche Ausgaben liefern), das sollte doch dann von außen nicht wirklich interessieren. Entweder du setzt Verbose oder nicht, aber dann bestimmte Aktionen anstoßen wollen, weil dein Reader Verbose ist, halte ich für unsinnig. Du könntest auch mal erklären, warum du dieses Verhalten so haben willst.



  • TTS, warum willst du von aussen auf private Member zugreifen? Damit umgehst du das Prinzip der Kapselung und nimmst viele unnötige Nachteile in Kauf.


Log in to reply