指向指针传染媒介的传染媒介

时间:2013-07-19 21:02:08

标签: c++ pointers vector sfml

在我的框架类中,我声明了这个向量: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&'。怎么办?

2 个答案:

答案 0 :(得分:1)

你忘了取消引用迭代器。改变这一行:

window->draw(itr);

window->draw(**itr);

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

答案 1 :(得分:0)

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

window->draw(**itr);