【问题标题】:Vector pointing to vector of pointers指向指针向量的向量
【发布时间】:2013-07-19 06:58:46
【问题描述】:

在我的框架类中,我声明了这个向量: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&amp;),错误为error: no matching function for call to 'sf::RenderWindow::draw(std::vector&lt;sf::Drawable*&gt;::iterator&amp;'。做什么?

【问题讨论】:

    标签: c++ pointers vector sfml


    【解决方案1】:

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

    window->draw(itr);
    

    window->draw(**itr);
    

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

    【讨论】:

    • 感谢您解释解决方案为何有效以及问题所在!
    【解决方案2】:

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

    window->draw(**itr);
    

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 2013-11-21
      相关资源
      最近更新 更多