Ich bin ein bisschen neu in C ++. Ich habe Probleme beim Einrichten meiner Header. Dies ist von functions.h
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect *);
Und das ist die Funktionsdefinition aus functions.cpp
void
apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip = NULL)
{
...
}
Und so benutze ich es in main.cpp
#include "functions.h"
int
main (int argc, char * argv[])
{
apply_surface(bla,bla,bla,bla); // 4 arguments, since last one is optional.
}
Dies wird jedoch nicht kompiliert, da main.cpp nicht weiß, dass der letzte Parameter optional ist. Wie kann ich das zum Laufen bringen?
Antworten:
Sie machen, dass die Deklaration (dh in der Header-Datei -
functions.h
) den optionalen Parameter enthält, nicht die Definition (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*/) { ... }
quelle
Der Standardparameterwert sollte in der Funktionsdeklaration (functions.h) und nicht in der Funktionsdefinition (function.cpp) enthalten sein.
quelle
Verwenden:
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * = NULL);
(Hinweis: Ich kann es hier nicht überprüfen. Ich habe keinen Compiler in der Nähe.)
quelle