Ĺadny brzuch
Mam sobię metodę:
list<int>::const_iterator funkcja(int i) const <-metoda musi być const
{
list<int>::const_iterator it= list.begin();
return it;
}
mam pytanie czy da się i jak zamienić const_iterator na iterator. Bo iterator zwracany w powyższej funkcji muszę wykorzystać do zmiany elementu w liście, a jednocześnie funkcja musi być const (takie zadanie), próbowałem z const_cast<> ale coś nie wychodzi mi.
Mam sobię metodę:
list<int>::const_iterator funkcja(int i) const <-metoda musi być const
{
list<int>::const_iterator it= list.begin();
return it;
}
mam pytanie czy da się i jak zamienić const_iterator na iterator. Bo iterator zwracany w powyższej funkcji muszę wykorzystać do zmiany elementu w liście, a jednocześnie funkcja musi być const (takie zadanie), próbowałem z const_cast<> ale coś nie wychodzi mi.
Poplatanie z pomerdaniem. Jezeli metoda jest const, to podpisujesz rodzaj "kontraktu" ze jest bezpieczna - ze nie zmodyfikuje danych (i nie doprowadzi do tego). To co Ty chcesz zrobic to zaprzeczenie idei const.
Twoja metoda ma zwrocic iterator aby zmodyfikowac to na co wskazuje ???. To po licho const dla metody ... taki const mozna do smietnika wyrzucic.
Jak metoda jest const to musisz zagwarantowac, ze jej uzycie nie doprowadzi do zmodyfikowania danych klasy. Jak zwraca wskaznik, referencje, iterator to ma to byc "const <costam>". Jak przez wartość (jezeli ta wartosc nie jest iteratorem, intel. wskaznikiem itp) - nie ma znaczenia.
Użytkownik st3tc edytował ten post 20 listopad 2006, 06:17
Poplatanie z pomerdaniem. Jezeli metoda jest const, to podpisujesz rodzaj "kontraktu" ze jest bezpieczna - ze nie zmodyfikuje danych (i nie doprowadzi do tego). To co Ty chcesz zrobic to zaprzeczenie idei const.
Twoja metoda ma zwrocic iterator aby zmodyfikowac to na co wskazuje ???. To po licho const dla metody ... taki const mozna do smietnika wyrzucic.
Jak metoda jest const to musisz zagwarantowac, ze jej uzycie nie doprowadzi do zmodyfikowania danych klasy. Jak zwraca wskaznik, referencje, iterator to ma to byc "const <costam>". Jak przez wartość (jezeli ta wartosc nie jest iteratorem, intel. wskaznikiem itp) - nie ma znaczenia.
Wiem po co jest jest modyfikator const da funkcji i to co chciałem zrobić wcale nie przeczy idei const:
- funkcja nic nie zmienia
-zwraca const_iterator, uniemożliwając zmianę
czyli wszystko jest ok.
Ale to co kto zrobi potem już z tym iteratorem to nie sprawa funkcji. I właśnie chodziło mi aby po wywołaniu funkcji która zwróci taki const_iterator zrzutować go na zwykły. Teraz to już mniej ważne bo udało mi się to inaczej obejść. ale jak ktoś wie jak to zrobić to niech napisze.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
list<int>::const_iterator funkcja(int i) const <-metoda musi być const
{
list<int>::const_iterator it= list.begin();
return it;
}
mam pytanie czy da się i jak zamienić const_iterator na iterator. Bo iterator zwracany w powyższej funkcji muszę wykorzystać do zmiany elementu w liście, a jednocześnie funkcja musi być const (takie zadanie), próbowałem z const_cast<> ale coś nie wychodzi mi.
Mam sobię metodę:
list<int>::const_iterator funkcja(int i) const <-metoda musi być const
{
list<int>::const_iterator it= list.begin();
return it;
}
mam pytanie czy da się i jak zamienić const_iterator na iterator. Bo iterator zwracany w powyższej funkcji muszę wykorzystać do zmiany elementu w liście, a jednocześnie funkcja musi być const (takie zadanie), próbowałem z const_cast<> ale coś nie wychodzi mi.
Poplatanie z pomerdaniem. Jezeli metoda jest const, to podpisujesz rodzaj "kontraktu" ze jest bezpieczna - ze nie zmodyfikuje danych (i nie doprowadzi do tego). To co Ty chcesz zrobic to zaprzeczenie idei const.
Twoja metoda ma zwrocic iterator aby zmodyfikowac to na co wskazuje ???. To po licho const dla metody ... taki const mozna do smietnika wyrzucic.
Jak metoda jest const to musisz zagwarantowac, ze jej uzycie nie doprowadzi do zmodyfikowania danych klasy. Jak zwraca wskaznik, referencje, iterator to ma to byc "const <costam>". Jak przez wartość (jezeli ta wartosc nie jest iteratorem, intel. wskaznikiem itp) - nie ma znaczenia.
Użytkownik st3tc edytował ten post 20 listopad 2006, 06:17
Poplatanie z pomerdaniem. Jezeli metoda jest const, to podpisujesz rodzaj "kontraktu" ze jest bezpieczna - ze nie zmodyfikuje danych (i nie doprowadzi do tego). To co Ty chcesz zrobic to zaprzeczenie idei const.
Twoja metoda ma zwrocic iterator aby zmodyfikowac to na co wskazuje ???. To po licho const dla metody ... taki const mozna do smietnika wyrzucic.
Jak metoda jest const to musisz zagwarantowac, ze jej uzycie nie doprowadzi do zmodyfikowania danych klasy. Jak zwraca wskaznik, referencje, iterator to ma to byc "const <costam>". Jak przez wartość (jezeli ta wartosc nie jest iteratorem, intel. wskaznikiem itp) - nie ma znaczenia.
Wiem po co jest jest modyfikator const da funkcji i to co chciałem zrobić wcale nie przeczy idei const:
- funkcja nic nie zmienia
-zwraca const_iterator, uniemożliwając zmianę
czyli wszystko jest ok.
Ale to co kto zrobi potem już z tym iteratorem to nie sprawa funkcji. I właśnie chodziło mi aby po wywołaniu funkcji która zwróci taki const_iterator zrzutować go na zwykły. Teraz to już mniej ważne bo udało mi się to inaczej obejść. ale jak ktoś wie jak to zrobić to niech napisze.