Toon posts:

[C++] Vector doorlopen met iterator

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik kan mijn vector niet doorlopen. Ik krijg een foutmelding bij het declareren van de iterator.

Mijn vector wordt op deze manier gedeclareerd, in de Header file.
C++:
1
std::vector<Product> bp;



Dit is de for loop:
C++:
1
2
3
4
// std::vector<Product> bp;
for (std::vector<Product>::iterator it = bp.begin(); it != bp.end(); ++it)  {
        totalPrice += (*it).getPrice();
}



Dit is de error
code:
1
cannot convert from 'const class Product *' to 'class Product *'



Als ik de declaratie van de vector boven de for loop zet, (wat ik nu uitgecommentarieerd hebt) dan gaat het compilen foutloos. Maar dan heb ik er natuurlijk niks meer aan. Heeft iemand een idee waar het aan kan liggen?

[ Voor 5% gewijzigd door Verwijderd op 20-12-2003 15:13 ]


Verwijderd

Verwijderd schreef op 20 december 2003 @ 15:07:
C++:
1
2
3
4
// std::vector<Product> bp;
for (std::vector<Product>::iterator it = bp.begin(); it != bp.end(); ++it)  {
        totalPrice += it.getPrice();
}
C++:
1
        totalPrice += (*it).getPrice();

[ Voor 8% gewijzigd door Verwijderd op 20-12-2003 15:09 ]


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Of wat je ook kan doen:

totalPrice += it->getPrice();

Omdat (*p).operation()
gelijk is aan: p->operation()

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Oh ja, tnx. Maar dat is de 2e fout die ik kreeg. Ik krijg nog steeds een foutmelding bij de declaratie van de iterator.

Ik heb het meteen even verbeterd in de start-post.

Maar ik krijg dus nog steeds die fout. :'(

[ Voor 16% gewijzigd door Verwijderd op 20-12-2003 15:14 ]


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Gebruik vector::const_iterator ipv vector::iterator. Ik vermoed dat getPrice() een const method is.

[ Voor 32% gewijzigd door Orphix op 20-12-2003 15:15 ]


Verwijderd

Topicstarter
Orphix schreef op 20 december 2003 @ 15:14:
Gebruik vector::const_iterator ipv vector::iterator.
Thanks _/-\o_

getPrice() is idd een const methode.

[ Voor 11% gewijzigd door Verwijderd op 20-12-2003 15:16 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Orphix schreef op 20 december 2003 @ 15:14:
Gebruik vector::const_iterator ipv vector::iterator. Ik vermoed dat getPrice() een const method is.
Het komt niet omdat getPrice () const is of niet, het komt omdat de vector zelf const is, waardoor je de const-versie van begin () en end () aanroept, die idd een const_iterator teruggeeft, en geen iterator.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1