object - How to call a C++ class Constructor from another Constructor -


this question has answer here:

i'm trying create object in c++ requires multiple object constructors. foo() , foo(int) foo(int) calls foo(). simplified code written below:

#include <iostream> class foo{  private:         int ix;   public:         void printx(string slabel){             cout << slabel << " : " << " foo::ix = " << foo::ix << endl;         };           void setx(int ix){             foo::ix = ix;              foo::printx("setx(void) method");         };           foo(){             foo::ix = 1;             foo::printx("foo(void) constructor");         };         foo(int ix){             foo::setx(ix);             foo::printx("foo(int) constructor");             foo::foo();             foo::printx("foo(int) constructor");          };   };  int main( int argc, char** argv ){      foo bar(2);      return 0; } 

the output of is

setx(void) method :  foo::ix = 2 foo(int) constructor :  foo::ix = 2 foo(void) constructor :  foo::ix = 1 foo(int) constructor :  foo::ix = 2 

as results indicate setx method works expected. foo::ix equal 2 inside , outside of scope of function.

however when calling foo(void) constructor within foo(int) constructor, foo::ix stays equal 1 within constructor. exits out method, reverts 2.

so question 2-fold:

  1. why c++ behave (a constructor cannot called within constructor without values assigned)?
  2. how can create multiple constructor signatures, without redundant duplicate code doing same thing?

any appreciated.

thanks

foo::foo(); in foo::foo(int) not invoking default constructor on current object expected. constructs temporary foo, has nothing current object.

you can use delegating constructor (since c++11) this:

foo(int ix) : foo() {     // ... };  

note foo::foo() invoked in advance of body of foo::foo(int) here.

an alternative avoid duplicated code use setx() common initialization method. (or make new 1 if not appropriate.)

foo() {     setx(1);     // ... }; foo(int ix) {     setx(ix);     // ... };  

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -