Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Optional arguments

Optional arguments

Scheduled Pinned Locked Moved C / C++ / MFC
helptutorialquestion
15 Posts 9 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    SWDevil
    wrote on last edited by
    #1

    Hi, I have a function that is declared as follows: void func(int A, int B, int C, int D=-1, int E=-1); arguments D and E are optional, and so if the function is called like this: func(A,B,C); then D and E recieve the value -1. What I want to do is add another optional argument, let's say int F that will also receive -1 as default, for example. The problem is that sometimes I want to call the function only with the parameters A,B,C and F. If I declare the function like this: void func(int A, int B, int C, int D=-1, int E=-1, F); will I be able to call the function in this manner: func(A,B,C,,,F); ?

    N _ T B 4 Replies Last reply
    0
    • S SWDevil

      Hi, I have a function that is declared as follows: void func(int A, int B, int C, int D=-1, int E=-1); arguments D and E are optional, and so if the function is called like this: func(A,B,C); then D and E recieve the value -1. What I want to do is add another optional argument, let's say int F that will also receive -1 as default, for example. The problem is that sometimes I want to call the function only with the parameters A,B,C and F. If I declare the function like this: void func(int A, int B, int C, int D=-1, int E=-1, F); will I be able to call the function in this manner: func(A,B,C,,,F); ?

      N Offline
      N Offline
      Nibu babu thomas
      wrote on last edited by
      #2

      SWDevil wrote:

      void func(int A, int B, int C, int D=-1, int E=-1, F); will I be able to call the function in this manner: func(A,B,C,,,F); ?

      No.


      Nibu thomas A Developer Programming tips[^]  My site[^]

      1 Reply Last reply
      0
      • S SWDevil

        Hi, I have a function that is declared as follows: void func(int A, int B, int C, int D=-1, int E=-1); arguments D and E are optional, and so if the function is called like this: func(A,B,C); then D and E recieve the value -1. What I want to do is add another optional argument, let's say int F that will also receive -1 as default, for example. The problem is that sometimes I want to call the function only with the parameters A,B,C and F. If I declare the function like this: void func(int A, int B, int C, int D=-1, int E=-1, F); will I be able to call the function in this manner: func(A,B,C,,,F); ?

        _ Offline
        _ Offline
        _anil_
        wrote on last edited by
        #3

        SWDevil wrote:

        void func(int A, int B, int C, int D=-1, int E=-1, F);

        forget about calling the funtion, C++ won't allow to declare the funtion like this. If you declare an argumnet with default value then all the arguments after that should have default value . Regards Anil

        S 1 Reply Last reply
        0
        • _ _anil_

          SWDevil wrote:

          void func(int A, int B, int C, int D=-1, int E=-1, F);

          forget about calling the funtion, C++ won't allow to declare the funtion like this. If you declare an argumnet with default value then all the arguments after that should have default value . Regards Anil

          S Offline
          S Offline
          SWDevil
          wrote on last edited by
          #4

          oops - my mistake... I meant to declare the function: void func(int A, int B, int C, int D=-1, int E=-1, F=-1); but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

          C O _ 3 Replies Last reply
          0
          • S SWDevil

            oops - my mistake... I meant to declare the function: void func(int A, int B, int C, int D=-1, int E=-1, F=-1); but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

            C Offline
            C Offline
            Cedric Moonen
            wrote on last edited by
            #5

            Nope. You have to provide the arguments in the same order. Whenever you supply a value for an optional parameter, it will be used for the first optional parameter.


            Cédric Moonen Software developer
            Charting control

            1 Reply Last reply
            0
            • S SWDevil

              oops - my mistake... I meant to declare the function: void func(int A, int B, int C, int D=-1, int E=-1, F=-1); but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

              O Offline
              O Offline
              Owner drawn
              wrote on last edited by
              #6

              SWDevil wrote:

              but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

              Well if you are desperate to get it working take a look at va_arg, va_list, va_start, va_end. It's an option.


              Owner drawn Jesus Loves

              T R 2 Replies Last reply
              0
              • S SWDevil

                oops - my mistake... I meant to declare the function: void func(int A, int B, int C, int D=-1, int E=-1, F=-1); but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

                _ Offline
                _ Offline
                _anil_
                wrote on last edited by
                #7

                No you can't :-( What you want is calling the function void func(int A, int B, int C, int D=-1, int E=-1, F=-1); in func(A,B,C,,,F); Suppose( which will never happen)if you succeed, you will get D and E as -1. So you can call func(A, B, C, -1, -1, F); :-) Regards Anil

                1 Reply Last reply
                0
                • S SWDevil

                  Hi, I have a function that is declared as follows: void func(int A, int B, int C, int D=-1, int E=-1); arguments D and E are optional, and so if the function is called like this: func(A,B,C); then D and E recieve the value -1. What I want to do is add another optional argument, let's say int F that will also receive -1 as default, for example. The problem is that sometimes I want to call the function only with the parameters A,B,C and F. If I declare the function like this: void func(int A, int B, int C, int D=-1, int E=-1, F); will I be able to call the function in this manner: func(A,B,C,,,F); ?

                  T Offline
                  T Offline
                  toxcct
                  wrote on last edited by
                  #8

                  why not putting the F parameter between C and D ?

                  void foo(int A, int B, int C, int F = -1, int D = -1, int E = -1) {
                  //...
                  }

                  so that you can use it like this :

                  int A, B, C, D, E, F;

                  foo(A, B, C); // A B C -1 -1 -1
                  foo(A, B, C, F); // A B C -1 -1 F
                  foo(A, B, C, F, D); // A B C D -1 F
                  foo(A, B, C, F, D, E); // A B C D E F


                  TOXCCT >>> GEII power

                  [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                  S 1 Reply Last reply
                  0
                  • T toxcct

                    why not putting the F parameter between C and D ?

                    void foo(int A, int B, int C, int F = -1, int D = -1, int E = -1) {
                    //...
                    }

                    so that you can use it like this :

                    int A, B, C, D, E, F;

                    foo(A, B, C); // A B C -1 -1 -1
                    foo(A, B, C, F); // A B C -1 -1 F
                    foo(A, B, C, F, D); // A B C D -1 F
                    foo(A, B, C, F, D, E); // A B C D E F


                    TOXCCT >>> GEII power

                    [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                    S Offline
                    S Offline
                    SWDevil
                    wrote on last edited by
                    #9

                    But I also sometimes want to call the function without the F parameter (and with the D and E parameters)... :(

                    T T 2 Replies Last reply
                    0
                    • S SWDevil

                      But I also sometimes want to call the function without the F parameter (and with the D and E parameters)... :(

                      T Offline
                      T Offline
                      toxcct
                      wrote on last edited by
                      #10

                      so write several overloads of the function...!


                      TOXCCT >>> GEII power

                      [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

                      1 Reply Last reply
                      0
                      • S SWDevil

                        Hi, I have a function that is declared as follows: void func(int A, int B, int C, int D=-1, int E=-1); arguments D and E are optional, and so if the function is called like this: func(A,B,C); then D and E recieve the value -1. What I want to do is add another optional argument, let's say int F that will also receive -1 as default, for example. The problem is that sometimes I want to call the function only with the parameters A,B,C and F. If I declare the function like this: void func(int A, int B, int C, int D=-1, int E=-1, F); will I be able to call the function in this manner: func(A,B,C,,,F); ?

                        B Offline
                        B Offline
                        BadKarma
                        wrote on last edited by
                        #11

                        Hi, the simples solution is to provide a wrapper macro for your function

                        void func(int A, int B, int C, int D=-1, int E=-1, int F=-1);
                        #define FUNC(a_, b_, c_, f_) func(a_, b_, c_, -1, -1, f_)
                        

                        This way you can simply call it through the macro in those rare occasions where only the F should be given.

                        void Call()
                        {
                          int A, B, C, D, E, F;
                        
                          // normal call
                          func(A, B, C);
                          func(A, B, C, D, E, F);
                        
                          // special call
                          FUNC(A, B, C, F);
                        }
                        

                        codito ergo sum

                        1 Reply Last reply
                        0
                        • O Owner drawn

                          SWDevil wrote:

                          but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

                          Well if you are desperate to get it working take a look at va_arg, va_list, va_start, va_end. It's an option.


                          Owner drawn Jesus Loves

                          T Offline
                          T Offline
                          ThatsAlok
                          wrote on last edited by
                          #12

                          Owner drawn wrote:

                          Well if you are desperate to get it working take a look at va_arg, va_list, va_start, va_end. It's an option.

                          Well Back after long time:)

                          "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow

                          cheers, Alok Gupta VC Forum Q&A :- I/ IV Support CRY- Child Relief and You

                          1 Reply Last reply
                          0
                          • S SWDevil

                            But I also sometimes want to call the function without the F parameter (and with the D and E parameters)... :(

                            T Offline
                            T Offline
                            ThatsAlok
                            wrote on last edited by
                            #13

                            SWDevil wrote:

                            ut I also sometimes want to call the function without the F parameter (and with the D and E parameters)..

                            What about using Variable Argument System!

                            "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow

                            cheers, Alok Gupta VC Forum Q&A :- I/ IV Support CRY- Child Relief and You

                            1 Reply Last reply
                            0
                            • O Owner drawn

                              SWDevil wrote:

                              but if I declare it this way, will I be able to call the func without specifying the parameters D and E?

                              Well if you are desperate to get it working take a look at va_arg, va_list, va_start, va_end. It's an option.


                              Owner drawn Jesus Loves

                              R Offline
                              R Offline
                              Rajesh R Subramanian
                              wrote on last edited by
                              #14

                              Where are you buddy? These days you are not posting messages to the board.

                              Nobody can give you wiser advice than yourself. - Cicero

                              O 1 Reply Last reply
                              0
                              • R Rajesh R Subramanian

                                Where are you buddy? These days you are not posting messages to the board.

                                Nobody can give you wiser advice than yourself. - Cicero

                                O Offline
                                O Offline
                                Owner drawn
                                wrote on last edited by
                                #15

                                brahmma wrote:

                                Where are you buddy? These days you are not posting messages to the board.

                                Hmm.. I was away for quite a while but now alive and kicking. ;)


                                Owner drawn Jesus Loves

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • World
                                • Users
                                • Groups