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 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