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 ?
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*/) {}
};
Put the object into a local scope:
while (running)
{
Player p; // fresh
//...
}
Each time the loop body executes, a new Player
object is instantiated.
class Player
{
int grid;
Player()
{
grid = 0;
}
}
void main()
{
Player p;
...
...
//now again I want to initialize p here, what to write ?
p = Player();
}
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.
}