使用SDL2时,''左边必须有class / struct / union

时间:2018-04-27 11:06:19

标签: c++ visual-studio sdl-2

我正在大学使用SDL库作为我的作业,该程序最初运行顺利但后来我创建了一个使用SDL作为成员的类:

#pragma once
#include <SDL.h>

#include <string>
#include <SDL_image.h>
#include <cstring>

using namespace std;
class Anh
{
public:
    SDL_Surface * SURFACE;
    SDL_Texture * TEXTURE;
    SDL_Rect RECT;
    void ganAnh(string a, SDL_Renderer *renderer);
    void setRect(int a, int b, int c, int d);
};

和Object.cpp

#include "Object.h"


    void Anh::ganAnh(string a, SDL_Renderer * renderer)
    {
        SURFACE = IMG_Load(a.c_str);
        TEXTURE = SDL_CreateTextureFromSurface(renderer, SURFACE);
    }

    void Anh::setRect(int a, int b, int c, int d)
    {
        RECT.x = a;
        RECT.y = b;
        RECT.w = c;
        RECT.h = d;
    }

这是在main.c:之前的Source.cpp中的变量声明:

Anh Image;
Anh Bar;

但是当我在我的函数中使用这个类成员时

void LoadBar(SDL_Renderer *renderer, string a)
{
    SDL_RenderCopy(renderer, Image.TEXTURE, NULL, &Image.RECT);
    Bar.RECT.x = (720 - Bar.RECT.w * a.length()) / 2;
    for (int i = 0; i < a.length(); i++)
    {
        SDL_RenderCopy(renderer, Bar.TEXTURE, NULL, &Bar.RECT);
        Bar.RECT.x += 50;
        if (i == a.length() - 1) Bar.RECT.x = (720 - Bar.RECT.w * a.length()) / 2;
    }
}

它报告了'.TEXTURE'左边的C2228必须有class / struct / union和

C2660'SDL_RenderCopy':函数不带2个参数

每次访问类成员时都会遇到错误。请帮帮我!

1 个答案:

答案 0 :(得分:0)

我没有在你的函数LoadBar中看到Bar的实例化。 例如:

Anh * Bar = new Anh();

编辑: 好的,声明似乎不是问题。

但是,你看过这里了吗? https://msdn.microsoft.com/en-gb/library/3y365xw6.aspx

- &GT;因此,如果您尚未声明另一个Image或Bar变量,则对您的成员的访问权限不正确。