vector<bullets*> bullet_collection; //Note that this is a collection of pointers
bullets* b;
//...Press shoot...
b = new bullets();
bullet_collection.push_back(b); //now you are pushing back the correct type
while(bullet_collection.size() > 0){
if(bullet_collection.back()->collision()) blah();
//Because it is a container of pointers, use '->' instead of '.'
delete bullet_collection.back();
bullet_collection.pop_back();
}
//Or, if you don't want a container of pointers (probably for the best)
vector <bullets> bullet_collection;
bullets* b;
//...Press shoot...
b = new bullets();
bullet_collection.push_back(*b); //Note the dereference to get the actual object
delete b;
//etc.
You might also want to consider not using pointers at all for this part of your program.