Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指向指针向量的向量_C++_Pointers_Vector_Sfml - Fatal编程技术网

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);