I am kind of new to C++. I am having trouble setting up my headers. This is from functions.h
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect *);
And this is the function definition from functions.cpp
void apply_surface(int x, int y, SDL_Surface * source, SDL_Surface * destination,SDL_Rect *clip = NULL) { ... }
And this is how I use it 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. }
But, this doesn't compile, because, main.cpp doesn't know last parameter is optional. How can I make this work?
A default argument is a value provided in a function declaration that is automatically assigned by the compiler if the calling function doesn't provide a value for the argument. In case any value is passed, the default value is overridden.
The header declares "what" a class (or whatever is being implemented) will do, while the cpp file defines "how" it will perform those features.
You make the declarations in a header file, then use the #include directive in every . cpp file or other header file that requires that declaration. The #include directive inserts a copy of the header file directly into the . cpp file prior to compilation.
You make the declaration (i.e. in the header file - functions.h
) contain the optional parameter, not the 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*/) { ... }
The default parameter value should be in the function declaration (functions.h), rather than in the function definition (function.cpp).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With