name eines objektes variablen ausgeben



  • Hallo,
    da bin ich wieder. gibt es eine möglichkeit, in einer klasse auf den namen des erstellten objektes zuzugreifen und den z.B. auszugeben?

    meineKlasse objekt1, objekt2;
    
    objekt1.sagvar(); //bildschirmausgabe objekt2
    objekt2.sagvar(); //bildschirmausgabe objekt2
    

    wenn ja, wie könnte das ganze aussehen?

    liebe grüße

    P.S.: C++ macht langsam echt spaß, vor allem bei diesem wetter 😉



  • Hallo,
    Soweit ich weiß, gibt es keine derartige Möglichkeit. Aber wozu brauchst du dass denn? (Imho klingt das nach einem Designfehler...; Zur Not würde sich auch was mit einer std::map<object_name, object> machen lassen...)
    Falls es dir nur um die Inkrementierung geht, könntest du auch sowas in der Art machen:

    class foo
    {
        // daten...
    
           static size_t curr_obj_id;
        public:
           foo() : obj_id(++curr_obj_id) { }
           void sagvar() const { cout << "\n object_id: " << curr_obj_id; }
    };
    
    size_t foo::curr_obj_id = 0;
    

    /edit: Mit einer Anwendung:

    int main()
    {
        foo object1, object2;
        object1.sagvar();
        object2.savgar();
    }
    

    Caipi



  • Achtung achtung... Designfehler ⚠

    Zur Laufzeit hast du keine Variablennamen mehr sondern nur noch Adressen. Was willst du denn genau machen?



  • die namen der instanzen bekommt man nicht raus -hoechstens noch den namen der klasse.
    -aber wozu braucht man sowas?



  • Cpt.Tanga schrieb:

    hoechstens noch den namen der klasse.

    Und darauf kann man auch nicht wetten!



  • GPC schrieb:

    Cpt.Tanga schrieb:

    hoechstens noch den namen der klasse.

    Und darauf kann man auch nicht wetten!

    stimmt ist aber wahrscheinlicher dass das hinhaut als die namen der instanzen rauszubekommen



  • stimmt ist aber wahrscheinlicher dass das hinhaut als die namen der instanzen rauszubekommen

    ja, weil das Herausfinden des Namens einer Instanz nicht geht.



  • GPC schrieb:

    stimmt ist aber wahrscheinlicher dass das hinhaut als die namen der instanzen rauszubekommen

    ja, weil das Herausfinden des Namens einer Instanz nicht geht.

    caipi schrieb:

    Soweit ich weiß, gibt es keine derartige Möglichkeit

    FireFlow schrieb:

    Zur Laufzeit hast du keine Variablennamen mehr sondern nur noch Adressen.

    Cpt.Tanga schrieb:

    die namen der instanzen bekommt man nicht raus

    ja, ich glaube es haben jetzt wirklich alle verstanden... 🙄



  • Vielen Dank für die rege beteiligung,
    ich will ein paar I2C bausteine ansteuern, unter anderem pcf8591 (ad wandler) Es ging mir nur um die möglichkeit, bei einer ausgabe dem 'nen namen mit zu geben und dabei tauchte bei mir die frage auf, ob man auch auf Variablennamen noch zugreifen kann. aber so bekommen die einfach noch 'nen string name oder ne int ID mit in die klasse. Ich bin im moment noch ein wenig am rumexperimentieren bei c++ und wollt primär für den lerneffekt rausfinden, ob man auch an z.B. die Variablennamen rankommt.
    So gesehen ist es im entfernten auch ein kleiner designfehler, der aber durchaus schnell zu umgehen ist.
    Vielen Dank noch mal



  • Mein Vorschlag wär das ganze als struct oder Klasse zu kappsel, die eine Variable für den Namen und eine für den Wert enthält. Wenn die Anfrage nach einem Namen kommt, kannst du sie so identifizieren.


Anmelden zum Antworten