Relic, I definitely appreciate that suggestion, and I took it into consideration.
However, I had been trying so hard to figure out a create/destroy method for my bullets, that I wasn't going to be satisfied until I at least figured out a good way to do it. And I finally have.
Here is the solution I came up with, and hopefully this can be helpful to others in their games since bullets are such a prevalent part of gaming.
First I have a vector to store all of my Laser sprites called "laserbox".
Within the Laser class constructor, each laser sets its position to be the front tip of the space ship. As soon as the laser is created it begins moving upward based on its speed and movement functionality which is a different topic.
When the left mouse button is clicked, a new Laser sprite is create and added to the laserbox vector.
case sf::Event::MouseButtonPressed:
if(event.MouseButton.Button == sf::Mouse::Left){
laserbox.push_back(Laser(this));
} break;
Then, inside the game's main loop, this for loop is called. It calls each laser's Update function first, which moves the sprite and checks to see if the laser is still Alive, then it calls Window.Draw() to draw each laser to the screen.
Secondly, and this has been the tricky part for me, it destroys the lasers if they are no longer "Alive". Each laser has a bool member called Alive, and if gets switched to false by its Update() function as soon as its position is out of the screen and/or it comes into contact with a space-rock.
for(std::vector<Laser>::iterator iter = laserbox.begin(); iter != laserbox.end(); ){
iter->Update();
Window.Draw(*iter);
if(iter->Alive == false)
iter = laserbox.erase(iter);
else
++iter;
}
I hope this code can be helpful if anyone else comes across this need. It seems so simple now, but it solves a big problem for me.