Je suis un peu nouveau pour C++. J'ai du mal à configurer mes en-têtes. Cela vient de functions.h
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect *);
Et ceci est la définition de fonction de functions.cpp
void
apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip = NULL)
{
...
}
Et voici comment je l'utilise dans main.cpp
#include "functions.h"
int
main (int argc, char * argv[])
{
apply_surface(bla,bla,bla,bla); // 4 arguments, since last one is optional.
}
Mais cela ne se compile pas, car main.cpp ne sait pas que le dernier paramètre est facultatif. Comment puis-je faire fonctionner cela?
Vous faites la déclaration (c'est-à-dire dans le fichier d'en-tête - functions.h
) contiennent le paramètre facultatif, pas la définition (functions.cpp
).
//functions.h
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * clip = NULL);
//functions.cpp
void apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip /*= NULL*/)
{
...
}
La valeur de paramètre par défaut doit être dans la déclaration de fonction (functions.h), plutôt que dans la définition de fonction (function.cpp).
Utilisation:
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * = NULL);
(notez que je ne peux pas le vérifier ici; ne pas avoir de compilateur à proximité).