In C++ when we create object the constructor initi

2019-07-09 14:10发布

问题:

For example I Have this example code:

class Player
{
   int grid;
   Player()
   {
      grid = 0;
   }

}
void main()
{
   Player p;
   ...
   ...
   //now again I want to initialize p here, what to write ?
}

How do I call the constructor of p again ?

回答1:

Add init function. Call it in constructor, but also make it public, so you can call it later again.

Actually you can make any function you want to change the state:

class Player
{
public:
    void setState(/*anything you want*/) {}
};


回答2:

Put the object into a local scope:

while (running)
{
    Player p;  // fresh

    //...
}

Each time the loop body executes, a new Player object is instantiated.



回答3:

class Player
{
   int grid;
   Player()
   {
      grid = 0;
   }

}
void main()
{
   Player p;
   ...
   ...
   //now again I want to initialize p here, what to write ?
   p = Player();
}


回答4:

Reinforcing Andrew's answer:

class Player
{
public:
    Player()
    {
        reset(); //set initial values to the object
    }

    //Must set initial values to all relevant fields        
    void reset()
    {
        m_grid = 0; //inital value of "m_grid"
    }

private:
    int m_grid;
}


int main()
{
    Player p1;
    Player* p2 = new Player();

    ...
    ...
    p1.reset(); 
    p2->reset(); //Reset my instance without create a new one.
}


标签: c++ oop