Ik heb volgende class:
Niets bijzonders dus, volgens mij toch.
Deze class gebruikte ik op de volgende manier:
Nu was het zo dat de for loop regelmatig rommel uitspuwde, ipv de waarden die in de vector vec_ zaten. Dit gedrag verdween wanneer ik ipv telkens de vector getter in de for loop aan te roepen, eerst een lokale vector aanmaakte:
en die dan in de for loop gebruikte.
Mijn eerste aanpak leek me niet fout, maar waarom is die dan toch fout?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| class Custom{ //... }; class A { public: A() { // zorg dat er iets in vec_ zit } const std::vector<Custom>& getVector() const {return vec_;} private: std::vector<Custom> vec_; }; |
Niets bijzonders dus, volgens mij toch.
Deze class gebruikte ik op de volgende manier:
C++:
1
2
3
4
5
| A aObj; vector<Custom>::const_iterator it; for(it = aObj.getVector().begin(); it!=aObj.getVector().end(); it++){ cout << *it << endl; } |
Nu was het zo dat de for loop regelmatig rommel uitspuwde, ipv de waarden die in de vector vec_ zaten. Dit gedrag verdween wanneer ik ipv telkens de vector getter in de for loop aan te roepen, eerst een lokale vector aanmaakte:
C++:
1
| vector<Custom> local = aObj.getVector(); |
en die dan in de for loop gebruikte.
Mijn eerste aanpak leek me niet fout, maar waarom is die dan toch fout?