在我的框架类中,我声明了这个向量: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&'
。怎么办?
答案 0 :(得分:1)
你忘了取消引用迭代器。改变这一行:
window->draw(itr);
到
window->draw(**itr);
你必须取消引用它两次。一旦从迭代器到它指向的sf::Drawable*
,第二次因为向量保存指针而函数将引用作为参数。
答案 1 :(得分:0)
您需要取消引用迭代器和指针:
window->draw(**itr);