Слева от '' должен быть класс / структура / объединение при использовании SDL2 - PullRequest
0 голосов
/ 27 апреля 2018

Я использую библиотеку 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;
    }

Это объявление переменной в Source.cpp перед main:

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;
    }
}

Сообщается, что C2228 слева от '.TEXTURE' должен иметь класс / struct / union и

C2660 'SDL_RenderCopy': функция не принимает 2 аргумента

Каждый раз, когда я получаю доступ к ученику, я получаю эту ошибку. Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 27 апреля 2018

Я не вижу экземпляров для Bar в вашей функции LoadBar. Например:

Anh * Bar = new Anh();

Edit: Хорошо, декларация, похоже, не проблема.

Но вы смотрели здесь? https://msdn.microsoft.com/en-gb/library/3y365xw6.aspx

-> Таким образом, если вы не объявили другую переменную Image или Bar, доступ к вашему члену будет неправильным.

...