变量指针的成员函数未绘制到SDL_Surface?
Variable pointer's member function not drawing to SDL_Surface?
我想使用一个集合来引用某些tileobject(用户定义的类),以便我可以循环循环并相应地采取行动,或找到特定的temobjects,然后删除它,等等。
问题是,我想做的一件事是访问成员函数"渲染",该函数'渲染',该函数采用sdl_surface*并将图像应用于它。在集合外,这可以正常工作。但是,使用一组TileObject*如下
for(set<TileObject*>::iterator it = tileObjects.begin(); it != tileObjects.end(); ++it){
(*it)->render(dest, offset, tileSheet);
}
表示图像不会出现在屏幕上。我可以使用一组tileObject,
for(set<TileObject>::iterator it = tileObjects.begin(); it != tileObjects.end(); it++){
(*it).render(dest, offset, tileSheet);
}
,但随后我得到了"错误传递'const tileset'作为'this'....",因为我想访问的某些功能会更改值。
使用指针的成员函数在SDL中应用表面的正确方法是什么?
我正在使用GNU GCC编译器和Code :: Blocks如果有帮助。
插入集合中的值不能在就位更改,因为该值充当键,用于所有操作,例如插入和搜索。因此,(*i)将是t storst,在您的情况下,这将是const tileObject。如果渲染方法不是您的const方法,我想是您看到的错误。您的一个选择是将渲染方法更改为" const方法",例如
void render(dest, offset, sheet) const {...
如果您无法将该方法作为const进行,则可能必须检查您是否在以前的方法中填写集合时是否犯了任何错误。您可能必须创建一个新的tileObject,然后将其插入std :: set中,也要记住完成后删除。
或,另一个选择是仅使用std :: vector而不是std :: set。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- SDL 窗口不会弹出
- SDL 操纵杆按钮按下/C++
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- SDL 映像:无法打开映像,仅显示错误消息
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- "Undefined symbols for architecture x86_64" 在 SDL 2 (macOS) 中
- 为什么 SDL 在 Mac 上比 Linux 慢得多?
- 在 OSX 上打开 SDL 窗口时不要打开终端窗口
- 关于 Vulkan 并使用 GLFW 抽象出 Surface 创建
- SDL + OpenGL ES 2.0 使用着色器显示纹理
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- 在 cmake 中找不到 SDL 库
- SDL/C++: 如何平滑但随机地移动矩形?
- 如何与 SDL 库链接?
- 为什么我的C++代码不呈现 SDL 矩形?
- Surface Pro平板电脑上的QML应用程序键盘行为
- 来自 SDL Surface 的 openGL 纹理