[c++][SDL] Språket som inte ville vara som alla andra.
Hej sitter här och försöker jobba på ett litet spel men har stött på litet problem...
Error i g++:
$ make
g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -c src/SDLWrapper.cpp -o obj/SDLWrapper.o
src/SDLWrapper.cpp:18:14: error: prototype for ‘SDL_Surface* SDLWrapper::convertImage(SDL_Surface)’ does not match any in class ‘SDLWrapper’
src/SDLWrapper.h:19:17: error: candidate is: SDL_Surface SDLWrapper::convertImage(SDL_Surface)
src/SDLWrapper.cpp: In constructor ‘SDLWrapper::SDLWrapper()’:
src/SDLWrapper.cpp:44:28: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
src/SDLWrapper.cpp:44:28: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘SDL_Color*’ in assignment
src/SDLWrapper.cpp:46:64: error: conversion from ‘SDL_Color*’ to non-scalar type ‘SDL_Color’ requested
src/SDLWrapper.cpp:51:38: error: no matching function for call to ‘SDLWrapper::convertImage(SDL_Surface*&)’
src/SDLWrapper.h:19:17: note: candidate is: SDL_Surface SDLWrapper::convertImage(SDL_Surface)
src/SDLWrapper.cpp:54:39: error: no matching function for call to ‘SDLWrapper::convertImage(SDL_Surface*&)’
src/SDLWrapper.h:19:17: note: candidate is: SDL_Surface SDLWrapper::convertImage(SDL_Surface)
src/SDLWrapper.cpp:57:41: error: no matching function for call to ‘SDLWrapper::convertImage(SDL_Surface*&)’
src/SDLWrapper.h:19:17: note: candidate is: SDL_Surface SDLWrapper::convertImage(SDL_Surface)
src/SDLWrapper.cpp:60:41: error: no matching function for call to ‘SDLWrapper::convertImage(SDL_Surface*&)’
src/SDLWrapper.h:19:17: note: candidate is: SDL_Surface SDLWrapper::convertImage(SDL_Surface)
make: *** [obj/SDLWrapper.o] Fel 1
SDLWrapper.h:
/*
This file just contains a calass that is the a "mainLoop" of the game.
Nothing special...
*/
#ifndef H_SDLWRAPPER
#define H_SDLWRAPPER
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
class SDLWrapper{
public:
SDLWrapper();
~SDLWrapper();
//converts image to correct bitdepth
SDL_Surface convertImage(SDL_Surface inSurf);
//The mainLoop where the game will run..
void mainLoop();
private:
SDL_Surface* screen;
SDL_Surface* textScore;
SDL_Surface* playerImage;
SDL_Surface* invaderImage;
SDL_Surface* explotionImage;
SDL_Surface* projetileImage;
TTF_Font* font;
SDL_Color* colorWhite;
};
#endif
SDLWrapper.cpp:
#include <istream>
#include <vector>
#include <string>
#include <cstdlib>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
#include "SDLWrapper.h"
#include "gameLogic.h"
#include "gameObjects.h"
#include "gameObjectProjectile.h"
#include "gameObjectPlayer.h"
#include "gameObjectInvader.h"
SDL_Surface* SDLWrapper::convertImage(SDL_Surface inSurf){
//Converts Images to correct bit depth.
// do not forget to free the old surface if needen..
SDL_Surface* newSurf;
if(inSurf != NULL){
newSurf = SDL_DisplayFormat(inSurf);
}else{
printf("Some shit when down when trying to convert image...\n");
printf("Is the image loaded?\n");
exit(EXIT_FAILURE);
}
return newSurf;
}
SDLWrapper::SDLWrapper(){
//Constructor for class...
//Itit some stuff...
SDL_Init(SDL_INIT_EVERYTHING);
TTF_Init();
font = TTF_OpenFont("media/fonts/ubuntu-font-family/UbuntuMono-B.ttf", 24);
screen = SDL_SetVideoMode(640, 480, 8, SDL_HWSURFACE | SDL_DOUBLEBUF);
colorWhite = {255,255,255};
textScore = TTF_RenderText_Solid(font, "Score: 0", colorWhite);
SDL_Surface* tmpimage; //somewhare te store the images temorarely..
tmpimage = IMG_Load("media/images/player.png");
playerImage = convertImage(tmpimage);
tmpimage = IMG_Load("media/images/invader.png");
invaderImage = convertImage(tmpimage);
tmpimage = IMG_Load("media/images/explotion.png");
explotionImage = convertImage(tmpimage);
tmpimage = IMG_Load("media/images/projetile.png");
projetileImage = convertImage(tmpimage);
SDL_FreeSurface(tmpimage); //freeing the temp image..
}
Har försökt med alla möjliga varianter med * och & och inget värkar fungera..
detta är den lösningen som har gett mig minst fel..
Makefile om det kan vara till hjälp:
CXX=g++
BINARY=bin/invaders
CXXFLAGS=-W -Wall -o0 -g
SDLFLAGS=`sdl-config --cflags --libs`
default: obj/main.o obj/SDLWrapper.o obj/gameLogic.o obj/gameObjects.a
$(CXX) $(CXXFLAGS) $(SDLFLAGS) $^ -o $(BINARY)
touch default
############# CREATING OBJECT FILES ####
obj/main.o:
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c src/main.cpp -o obj/main.o
obj/SDLWrapper.o:
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c src/SDLWrapper.cpp -o obj/SDLWrapper.o
obj/gameLogic.o:
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c src/gameLogic.cpp -o obj/gameLogic.o
## need to create an archive... stupid shit..
obj/gameObjects.a: obj/gameObjects.o obj/gameObjectProjectile.o \
obj/gameObjectPlayer.o obj/gameObjectInvader.o
ar rs obj/gameObjects.a $^
## Files to create archive.
obj/gameObjects.o: src/gameObjects.cpp
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@
obj/gameObjectProjectile.o: src/gameObjectProjectile.cpp
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@
obj/gameObjectPlayer.o: src/gameObjectPlayer.cpp
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@
obj/gameObjectInvader.o: src/gameObjectInvader.cpp
$(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@
############# TEST STUFF AND CLEANING ####
test:
echo $(CXX) $(CXXFLAGS) $(SDLFLAGS) -o $(BINARY) $(OBJECTFILES)
.PHONY: clean
clean:
rm obj/*.o
rm default
rm $(BINARY)
@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix