【发布时间】:2014-08-27 14:37:03
【问题描述】:
我不断收到此错误
C:\Users\Joshua\Desktop\Game Projects\SFML projects\Test\Render.cpp|21|error: 'class std::vector<Character>' has no member named 'getSprite'|
我正在尝试接受包含类型 Character 类的 pointers 的 vector。包含正确的头文件,所以这不是问题。大约过去一个小时左右,我一直试图弄清楚这一点,但我完全迷失了。我以为我做得对。非常感谢您的帮助!
void Render::draw(sf::RenderWindow* window, std::vector<Character>* foreground, std::vector<Character>* background, std::vector<Character>* scenery)
{
window->clear();
for(int a = 0; a<scenery->size(); a++ )
{
window->draw(scenery[a].getSprite());
}
for(int b = 0; b<background->size(); b++ )
{
window->draw(background[b].getSprite());
}
for(int c = 0; c<foreground->size(); c++ )
{
window->draw(foreground[c].getSprite());
}
window->display();
}
【问题讨论】:
-
您正在传递指向向量的指针。想想当您将
operator[]应用于指针时会发生什么。 -
它试图访问或创建
arrayofpointers? -
它将其视为向量数组。最好通过引用传递。
-
你能给我一个代码示例吗?我有点困惑
-
std::vector<something>* yourvector变为std::vector<something>& yourvector。你必须改变论点。您还必须更改函数才能使用实例而不是指针,即foreground->size()变为foregroung.size()。