0

在我的框架类中,我声明了这个向量:std::vector<sf::Drawable*> drawableStack;

当drawableStack全部填满时,我想在一个循环中绘制所有对象,如下所示:

void Framework::drawScreen()
{
    window->clear();

    std::vector<sf::Drawable*>::iterator itr;

    for(itr=drawableStack.begin(); itr!=drawableStack.end(); itr++)
    {
        window->draw(itr);
    }

    window->display();
}

窗口在标题中声明,sf::RenderWindow* window;绘制函数是sf::RenderWindow::draw(const sf::Drawable&),错误是error: no matching function for call to 'sf::RenderWindow::draw(std::vector<sf::Drawable*>::iterator&'。做什么?

4

2 回答 2

1

您忘记取消引用迭代器。更改此行:

window->draw(itr);

window->draw(**itr);

您必须取消引用它两次。一次是从迭代器到sf::Drawable*它指向的,第二次是因为向量保存指针并且函数将引用作为参数。

于 2013-07-19T21:03:20.773 回答
0

您需要取消引用迭代器和指针:

window->draw(**itr);
于 2013-07-19T21:04:06.313 回答