wektor wskaźników na strukturę

0

Jest sobie struktura Figure która ma obiekt typu float o nazwie x.
Jest sobie funkcja której prototyp to void draw(Figure &figure)

           vector<Figure *>::iterator iter=newFig.begin();
	for(;iter!=newFig.end();++iter)
	    if(**iter.x > 0.0f) //jak wezmę to w komentarz to kompilacja przechodzi
	        draw(**iter);

Z jakiegoś powodu kompilator czepia się wywołania **iter.x. Trochę nie rozumiem czemu bo jeśli czepia się tego wywołania to dlaczego nie czepia się wywołania draw(**iter)? Type **iter to Figure wobec czego jak dam kropkę i 'x' to powinien mi odwołać się do zmiennej x.
Komunikat jaki kompilator wywala to:

error C2039: 'x' : is not a member of 'std::_Vector_iterator<_Ty,_Alloc>'
1>        with
1>        [
1>            _Ty=Figure *,
1>            _Alloc=std::allocator<Figure *>
1>        ]

Pytanie jak poprawić by było dobrze stosując dalej iterator. Bo oczywiście można dać:

	for(u32 i=0;i<newFig.size();++i)
	    if(newFig[i]->x > 0.0f)
		draw(*newFig[i]);

i po problemie ale wolałbym się dowiedzieć jak zrobić z iteratorem.

0

Priorytet operatorów! Jeśli go nie znasz to stosuj nawiasy! Operator * ma bardzo niski priorytet, niższy niż . czy -> więc nie możesz napisać

**iter.x

bo to znaczy:

**(iter.x)

A iterator nie ma pola x...

1 użytkowników online, w tym zalogowanych: 0, gości: 1