Advertisement

Procedures/functions with optional parameters?

Started by January 28, 2001 08:21 PM
5 comments, last by paulcoz 24 years ago
How do you specify which are optional parameters in a procedure? I would like to be able to make two separate procedure calls: DrawCursor(1.0,&cursdata); DrawCursor(&cursdata); If the '1.0' (or any other value) is included it should be used accordingly inside the procedure, otherwise the code that uses the value should not be executed (or ignored). I haven't done this before and I can't get rid of the 'Procedure DrawCursor does not take 1 parameter(s)' error when I try to omit the optional parameter in the call. void DrawCursor(double colour, cursorpos *data) Thankyou, Paulcoz. Edited by - paulcoz on January 28, 2001 9:27:42 PM
If you want to do that your gonna have to switch the parameters first b/c optional parameters have to be after any non-optional parameters. Then change the declaration so that the last parameter is equal to a value.

void DrawCursor(cursorpos *data, int colour = 1)

BTW, you can have more than one optional parameters but they must be after any non-optional parameters.



Digital Radiation
Advertisement
+AA_740+,

What does the 'int colour = 1' mean? It won't change the value I pass into the procedure, will it?

Thanks,
Paulcoz.



Edited by - paulcoz on January 28, 2001 10:12:41 PM
What the "int colour = 1" means is that if you don''t pass arguments that are optional, this is the value they will have in the function. If you pass a value as an argument, then the value sent will be the one used.

Hope this helps

Etran1
Heres the scoop on all that cool stuff. Say you have a function, and you know that a value that will always work for a function is 1, but it can change sometimes. Then you do this:
void Function (int OptionalParameter = 1);

That way, you can call it two ways:

Function (4); // OptionalParameter = 4
Function (); // OptionalParameter = 1

Do you get it?

One catch, any optional parameters must come after non-optional parameters. So heres an example:

void Function (int NonOptional, int Optional = 1); // Legal
void Function (int Optional = 1, int NonOptional); // Illegal

One more cool thing. Function Overloading. You can write more than one function with the same name, the only thing is, there has to be a difference in the number of parameters, or the parameter types must be different. Example:

void Function (int IntParm, float FloatParm);
void Function (int IntParm);
void Function (float FloatParm);
// All of those will work.
int Function (int IntParm);
float Function (int IntParm);
// Those won''t work together, because different return types don''t matter, except maybe in the case of void/non-void. That should get you on your way.

farmersckn
Yesterday is the past, tomorrow is the future. Today is a gift, that is why we call it the present.
Another way would be to overload the function, like this:

void DrawCursor(double color, cursorpos *data)
{
...
}

void DrawCursor(cursorpos *data)
{
DrawCursor(1.0, data);
}
- Ian Perez (iperez.fett@verizon.net) - "It is by will alone I set my mind in motion"
Advertisement
Thankyou very much.

int colour = 1

That''s exactly what I needed to know then!
Paulcoz.

This topic is closed to new replies.

Advertisement