![](/img/trans.png)
[英]Vector of pointers, pointing to objects in vector of objects. How to do that?
[英]Vector pointing to vector of pointers
在我的框架類中,我聲明了這個向量: 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();
}
window在頭文件sf::RenderWindow* window;
並且繪制函數為sf::RenderWindow::draw(const sf::Drawable&)
,錯誤為error: no matching function for call to 'sf::RenderWindow::draw(std::vector<sf::Drawable*>::iterator&'
。
您忘記了取消引用迭代器。 更改此行:
window->draw(itr);
至
window->draw(**itr);
您必須取消引用兩次。 一旦從迭代器到達sf::Drawable*
它指向第二次,因為向量持有指針,並且函數將引用作為參數。
您需要同時取消引用迭代器和指針:
window->draw(**itr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.