我想使用一个集合来引用一些 TileObjects(一个用户定义的类),这样我就可以遍历它们并采取相应的行动,或者找到一个特定的并删除它等等。
问题是,我想做的一件事是访问成员函数“render”,它接受一个 SDL_Surface* 并将图像应用到它。在片场之外,这很好用。但是,使用一组 TileObject* 如下
for(set<TileObject*>::iterator it = tileObjects.begin(); it != tileObjects.end(); ++it){
(*it)->render(dest, offset, tileSheet);
}
表示图像不会出现在屏幕上。我可以使用一组 TileObjects,
for(set<TileObject>::iterator it = tileObjects.begin(); it != tileObjects.end(); it++){
(*it).render(dest, offset, tileSheet);
}
但后来我得到“将'const Tileset'作为'this'传递的错误......”因为我想要访问的某些函数会更改值。
使用指针的成员函数在 SDL 中应用表面的正确方法是什么?
如果有帮助,我正在使用 GNU GCC 编译器和 Code::Blocks。