Funktionen über Iterator aufrufen?



  • Ich habe eine Klasse.Zeiger zu deren Instanzen sind in einem Vector gespeichert. Jetzt möchte ich auf deren Funktionen zugreifen. Geht das über einen Iterator?


  • Administrator

    class MyClass
    {
    public:
      void method() { };
    };
    
    int main()
    {
      std::vector<MyClass*> vec;
    
      MyClass obj;
    
      vec.push_back(&obj);
    
      std::vector<MyClass*>::iterator iter = vec.begin();
    
      (*iter)->method(); // !!!!
    
      return 0;
    }
    

    Grüssli



  • Danke, genau das hab ich gesucht!



  • Hallo,

    hier ein Minimalbeispiel.

    Grüße

    class K
    {
            public:
                    void macheWas() const;
    };
    
    void K::macheWas() const
    {
            cout << "mach mach\n";
    }
    
    int main()
    {
            vector<K*> v;
    
            // Instanzen erzeugen und Adresse in Vector speichern
            for (int i=0; i<10; ++i)
                    v.push_back(new K);
    
            // Per Iterator auf deren Funktion(en) zugreifen
            typedef vector<K*>::iterator iter;
            for (iter i = v.begin(); i != v.end(); ++i)
                    (**i).macheWas();
                    // oder (*i)->macheWas();
    
            // Speicher freigeben
            while (!v.empty()) {
                    delete v.back();
                    v.pop_back();
            }
    
            return EXIT_SUCCESS;
    }
    

    Edit: Haa, da war jemand schneller! 🙂


  • Administrator

    lucky_tux schrieb:

    Edit: Haa, da war jemand schneller! 🙂

    Och, nur 20 Minuten ...
    ...
    Sag mir jetzt aber nicht, dass du an dem Beispiel 20 Minuten lang rumgewerkelt hast? 😃

    Grüssli



  • Sorry für OffTopic, aber da das Thema jetzt geklärt ist, kann ich ja hier weiterschreiben. 😃

    Wird in C++ noch häufig return EXIT_SUCCESS verwendet? Ich schreibe bei main() grundsätzlich nie ein return , und falls ich es tun würde, wäre mir eine 0 auch gut genug.



  • Nexus schrieb:

    Wird in C++ noch häufig return EXIT_SUCCESS verwendet? Ich schreibe bei main() grundsätzlich nie ein return , und falls ich es tun würde, wäre mir eine 0 auch gut genug.

    nix, return 0 und return EXIT_SUCCESS sind vollkommen identisch



  • Shade Of Mine schrieb:

    nix, return 0 und return EXIT_SUCCESS sind vollkommen identisch

    Worauf hast du gerade geantwortet? Ich hab jedenfalls nicht nach dem Unterschied gefragt.



  • Nexus schrieb:

    Sorry für OffTopic, aber da das Thema jetzt geklärt ist, kann ich ja hier weiterschreiben. 😃

    Wird in C++ noch häufig return EXIT_SUCCESS verwendet? Ich schreibe bei main() grundsätzlich nie ein return , und falls ich es tun würde, wäre mir eine 0 auch gut genug.

    Das ist wohl alles eine Frage des persönlichen Stils und davon, wie empfindlich der verwendete Compiler ist.


  • Administrator

    Nexus schrieb:

    Wird in C++ noch häufig return EXIT_SUCCESS verwendet? Ich schreibe bei main() grundsätzlich nie ein return , und falls ich es tun würde, wäre mir eine 0 auch gut genug.

    Ich verwende return 0 , aber dazu hatten wir doch schon mal eine Diskussion?
    EXIT_SUCCESS ist doch eigentlich C, aber naja, man kann es noch durchgehen lassen 😃

    Nix hinschreiben tun doch nur Faule ... :p

    Grüssli



  • Nexus schrieb:

    Shade Of Mine schrieb:

    nix, return 0 und return EXIT_SUCCESS sind vollkommen identisch

    Worauf hast du gerade geantwortet? Ich hab jedenfalls nicht nach dem Unterschied gefragt.

    Dachte du wolltest wissen ob es einen Unterschied gibt. Es gibt keinen, deshalb ist es komplett egal. Ich verwende return EXIT_SUCCESS eigentlich nie und nur dann return 0 wenn es auch ein return nicht 0 gibt.

    alles persönlicher geschmack...



  • Dravere schrieb:

    Ich verwende return 0 , aber dazu hatten wir doch schon mal eine Diskussion?

    Nicht ganz, da ging es darum, ob man die return -Anweisung hinschreiben solle oder nicht. Hier geht es um EXIT_SUCCESS oder 0 . 😉

    Nicht sehr relevant, die Diskussion, aber ich wollte es mal wissen. Und da halt oft gepredigt wird, man solle nicht zu viel C in C++ programmieren, habe ich das auch für einen Kandidaten gehalten. 🙂

    Shade Of Mine schrieb:

    alles persönlicher geschmack...

    Ja, grundsätzlich schon. Meine eigentliche Frage bezog sich aber darauf, ob das noch oft angewendet wird. Also nicht unbedingt Argumente dafür oder dagegen... 😉



  • Dravere schrieb:

    lucky_tux schrieb:

    Edit: Haa, da war jemand schneller! 🙂

    Och, nur 20 Minuten ...
    ...
    Sag mir jetzt aber nicht, dass du an dem Beispiel 20 Minuten lang rumgewerkelt hast? 😃
    Grüssli

    Nein, keine Sorge; es mag ja Menschen geben, die noch andere Dinge zwischendurch machen. 😃


Anmelden zum Antworten