Im working on Tile Mapping using SDL2, and so far stuff was going good, but for the life of me I can't figure out what I need to do to solve this problem.
This is the error: Expression must have class type.
Here is the class along with its' header.
#include "Sprite.h"
#include "includes.h"
CSprite::CSprite(SDL_Renderer *passedrenderer, std::string Filepath, int x, int y, int w, int h)
{
renderer = passedrenderer;
std::cout<<"Before\n";
image = IMG_LoadTexture(renderer, Filepath.c_str());
std::cout<<"after " << image<<std::endl;
rect.x = x;
rect.y = y;
rect.w = w;
rect.h = h;
}
CSprite::~CSprite()
{
SDL_DestroyTexture(image);
}
void CSprite::Draw()
{
SDL_RenderCopy(renderer, image, NULL, &rect);
}
void CSprite::SetX(int X)
{
rect.x = X;
}
void CSprite::SetY(int Y)
{
rect.y = Y;
}
void CSprite::SetPosition(int X, int Y)
{
rect.x = X;
rect.y = Y;
}
int CSprite::GetX()
{
return rect.x;
}
int CSprite::GetY()
{
return rect.y;
}
void CSprite::LoadMap(char *name)
{
int x, y;
FILE *Map;
Map = fopen(name, "rb");
for (y = 0; y < MAP_MAX_Y;y++)
{
for (x = 0; x < MAP_MAX_X;x++)
{
fscanf(Map, "%d", &Map.tile[y][x]);
}
}
fclose(Map);
}
void CSprite::DrawMap()
{
int x, y;
for (y = 0; y < MAP_MAX_Y; y++)
{
for (x = 0; x < MAP_MAX_X; x++)
{
if (&Map.tile[y][x] != 0)
{
}
}
}
}
Header:
#pragma once
#include "includes.h"
class CSprite
{
public:
CSprite(SDL_Renderer *passedrenderer,std::string Filepath, int x, int y, int w, int h);
~CSprite();
void SetX(int X);
void SetY(int Y);
void SetPosition(int X, int Y);
void Draw();
void LoadMap(char *name);
int GetX();
int GetY();
void DrawMap();
#define MAP_MAX_Y 10;
#define MAP_MAX_X 10;
#define TILE_SIZE 32;
private:
SDL_Texture *image;
SDL_Rect rect;
SDL_Renderer *renderer;
};
Thanks for any help, I'm going to attempt to solve this again tomorrow, but I've been a bit crushed on time recently.