Okay, I think I see the problem, I was thinking int was unsigned but apparently it defaults to signed. That threw me. If I put:

Code:
for (unsigned int i=0; i<MonsterList.size(); i++) {}
It doesn't give me any warnings.

So is "int" by default signed? Or is that a compiler specific thing?

Quote Originally Posted by laserlight View Post
Not quite. Suppose you have a pointer to creature that actually points to a monster object, with creature being a public base class of monster. If you invoke a virtual member function via this pointer, then the actual function that is called is the one from the monster class. If you invoke a non-virtual member function, then the actual function that is called is the one from the creature class, because the pointer is a pointer to creature. If the pointer was a pointer to monster, the member function from the monster class would be called, whether or not the member function is virtual.
Oh okay, I see.