我正在大学使用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个参数
每次访问类成员时都会遇到错误。请帮帮我!
答案 0 :(得分:0)
我没有在你的函数LoadBar中看到Bar的实例化。 例如:
Anh * Bar = new Anh();
编辑: 好的,声明似乎不是问题。
但是,你看过这里了吗? https://msdn.microsoft.com/en-gb/library/3y365xw6.aspx
- &GT;因此,如果您尚未声明另一个Image或Bar变量,则对您的成员的访问权限不正确。