Jeśli Potion dziedziczy z Update, to nie powinno być problemów.
Z komentarzy pod odpowiedzią Ehlerta:
expected class name before '{' token. a po usunięciu drugiego dziedziczenia program się uruchamia i wszystko działa poprawnie
Widocznie nie masz zaincludowanego Update.
pickUpArrayHeart[licznik].update(); // to chciałbym zastąpic wsk -> update();
Ale.. po co?
Btw. pętla wrzucona przez ciebie. Jeśli korzystasz z iteratorów, to... korzystaj z iteratorów:
for(iter6 = pickUpArrayHeart.begin(); iter6 != pickUpArrayHeart.end(); iter6++)
{
iter6->update();
window.draw(iter6->rect);
window.draw(iter6->sprite);
}
Kolejna uwaga: od tego jest sf::Drawable, żeby z niej dziedziczyć, a nie pisać coś takiego:
window.draw(pickUpArrayHeart[licznik].rect);
window.draw(pickUpArrayHeart[licznik].sprite);
Tzn. masz jakąś tam klase Potion i tak:
class Potion : public sf::Drawable
{
public:
void draw(sf::RenderTarget & target, sf::RenderStates states) const override
{
target.draw(rect, states);
target.draw(sprite, states);
}
private:
sf::RectangleShape rect;
sf::Sprite sprite;
};
//...
Potion p;
window.draw(p);