C++ 指向指针向量的向量
在我的框架类中,我声明了这个向量:C++ 指向指针向量的向量,c++,pointers,vector,sfml,C++,Pointers,Vector,Sfml,在我的框架类中,我声明了这个向量:std::vector drawableStack 当drawableStack全部填满时,我希望在循环中绘制所有对象,如下所示: void Framework::drawScreen() { window->clear(); std::vector<sf::Drawable*>::iterator itr; for(itr=drawableStack.begin(); itr!=drawableStack.end(
std::vector 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();
}
void Framework::drawScreen()
{
窗口->清除();
std::vector::迭代器itr;
对于(itr=drawableStack.begin();itr!=drawableStack.end();itr++)
{
窗口->绘图(itr);
}
窗口->显示();
}
窗口在标题sf::RenderWindow*窗口中声明代码>和绘图函数是sf::RenderWindow::draw(const sf::Drawable&)
,错误是error:调用“sf::RenderWindow::draw(std::vector::iterator&”时没有匹配的函数。
。怎么办?您忘记了取消对迭代器的引用。更改此行:
window->draw(itr);
到
您必须取消引用它两次。一次是从迭代器到它指向的sf::Drawable*
,第二次是因为向量包含指针,函数将引用作为参数。您需要取消引用迭代器和指针:
window->draw(**itr);
感谢您解释解决方案的工作原理以及问题所在!
window->draw(**itr);