0

我有一个具有此功能的课程:

void Render(SDL_Surface *source,SDL_Surface *destination,string img)
{
    SDL_Rect offset;
    offset.x = m_x;
    offset.y = m_y;
    source = IMG_Load(img);
    offset.w = source->w;
    offset.h = source->h;    
}

出于某种原因,即使include <string>在头文件的顶部,它也不允许这样做。我得到:

Identifier, "string" is undefined.

我在我的主文件中传递这样的数据:

btn_quit.Render(menu,screen,"button.png");

当我执行时,我得到:

'Button::Render' : function does not take 3 arguments

但是这个网站说string的是数据类型的正确语法(在底部):http ://www.cplusplus.com/doc/tutorial/variables/

有人可以解释我做错了什么吗?

4

1 回答 1

3

我可能会建议您将渲染功能更改为以下:

void Render(SDL_Surface *source,SDL_Surface *destination,const std::string& img)
{
    SDL_Rect offset;
    offset.x = m_x;
    offset.y = m_y;
    source = IMG_Load(img.c_str());
    offset.w = source->w;
    offset.h = source->h;    
}
  1. 使用 std::string 代替字符串
  2. 传递 img 引用而不是按值传递
  3. 从 IMG_Load(img) 更改;到 IMG_Load(img.c_str());
于 2012-11-04T05:53:12.887 回答