vector mit pointern?



  • Ich würd gern einen pusp pop stack realisieren, dafür eignet sich vector wunderbar, ich packe Objekte vom Typ Cator* in den vector, klappt auch gut.

    vector<Cator*> cStack;
    

    Aber kann ich den vector Eintrag für eintrag mit den pointern durchlaufen?
    Ich brauch dann doch sicherlich das hier -> http://www.cppreference.com/cppvector/begin.html
    Nur bekomm ich beim Zuweisen eines iterators in der Testzeile:

    vector<Cator*>::iterator myIter;
    myIter = cStack.begin();
    

    Die Meldung:

    Fehler 1 error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::_Tree<_Traits>::iterator' akzeptiert (oder keine geeignete Konvertierung möglich)

    Mir ist nicht ganz klar, wo das Problem liegt, die Ur-Version hat eigentlich const Cator* gestanden, weil mir const sehr lieb wäre und ich dachte er meckert wegen dem const.
    Wichtig dabei ist, dass es ein Pointer sein muss, weil die Objekte auch vorher und nach dem cStack existieren sollen.



  • Bei einem konstanten vector brauchst brauchst du auch einen vector<T>::**const_**iterator 😉



  • Ja, aber ohne const geht es ja mit dem normalen vector auch nicht



  • Evtl musst du ihn dann gleich bei der Initialisierung zuweisen (daran dürfte es aber eigentlich nicht liegen)? Also

    vector<int*> vec;
    vector<int*>::iterator iter=vec.begin();
    

    sollte jedenfalls gehen 😕



  • Nein, liefert mir den Fehler von oben



  • Klappt das?:

    #include <vector>
    using namespace std;
    
    int main()
    {
        vector<int*> vec;
        vector<int*>::iterator iter=vec.begin();
        return 0;
    }
    

    Weil wenn nicht, ist was gewaltig faul 😕 Was für nen Compiler hast du denn?



  • Das ist komisch nach dem neustarten ging alles, wobei ich ziemlich sicher bin, nichts geändert zu haben. Cached VC++ irgendwas?



  • Seikilos schrieb:

    Das ist komisch nach dem neustarten ging alles, wobei ich ziemlich sicher bin, nichts geändert zu haben. Cached VC++ irgendwas?

    Hehe :p Manchmal hilft es, das Projekt neu zu erstellen, ist aber wirklich etwas merkwürdig..



  • turbo c++ iss auch merkwürdig, einmal stürzt mein programm regelmäßig beim debuggen ab, und zwar wenn ich daten in ein Edit Feld kopiere ... einmal rechner neu starten und dann gehts plötzlich ... kann es sein wenn man "manchmal" einen zeigerüberlauf hat das man dem system dauerhafte schmerzen zufügt bis der rechner neu gestartet wird?



  • Was passiert, wenn du in fremde Speicherbereiche schreibst, ist nicht vorhersehbar - zwar sorgt Windows meistens dafür, daß die Auswirkungen im Umfeld des auslösenden Programms bleiben, aber wenn du "gut" zielst, erwischst du auch mal fremdgenutzte Speicherbereiche - mit den entsprechenden Auswirkungen auf deren "Besitzer".


Log in to reply