Name eines Klassenobjekts überladen



  • Hallo Leute,
    gibt es eine Vorgehensweise, mit der sich der Objektname eines Klassenobjekts direkt als eine ihrer Member-Variablen interpretieren lässt?

    Beispiel:

    class sonstwas
    {
    public:
       //die Konstruktoren
       //OK, meinetwegen ein paar Memberfunktionen
       int& sonstnefunktion();
       {return istegal;}
    private:
       //mehrere Member-Variablen
       int istegal;
    };
    

    so, das will ich in main folgendermaßen gebrauchen können:

    main()
    {
    sonstwas dieobjektinstanz;
    dieobjektinstanz.sonstnefunktion(); //soll das gleiche Ergebnis liefern wie:
    dieobjektinstanz;
    }
    

    Ist das möglich?



  • Hallo

    nein, denn der Klassenname an sich ist ausschließlich dem Konstruktor vorbehalten.

    bis bald
    akari



  • kk, danke ):



  • Du könntest den operator() überladen, wäre aber auch nur ne Weiterleitung:

    class sonstwas
    {
    public:
       //die Konstruktoren
       //OK, meinetwegen ein paar Memberfunktionen
       int& sonstnefunktion()
       {return istegal;}
    
       int& operator()()
       { return sonstnefunktion(); }
    
    private:
       //mehrere Member-Variablen
       int istegal;
    };
    
    int main() 
    {
    sonstwas dieobjektinstanz;
    dieobjektinstanz.sonstnefunktion(); //soll das gleiche Ergebnis liefern wie:
    dieobjektinstanz();
    }
    


  • akari schrieb:

    Hallo

    nein, denn der Klassenname an sich ist ausschließlich dem Konstruktor vorbehalten.

    bis bald
    akari

    ... wobei er hier über den "Variablennamen einer Instanz" (!= Ctor-Name) und nicht über den "Klassennamen" redet. 😉

    Ich denke, der Lord hat da schon technisch die richtige Antwort gegeben - allerdings wäre interessant, wozu benschi das verwenden möchte. Vielleicht gäbe es da noch passendere Möglichkeiten (oder eben ein gutes Argument, warum gerade der operator() das Richtige ist).

    Gruß,

    Simon2.


Anmelden zum Antworten