Putting breakpoints in may significantly affect your idea of 'elapsedTime'.
Without breakpoints, elapsedTime might be 0, or so close to 0 that all your calculations show no movement.
You also seem to be duplicating data (which is bad).
float xPos, yPos, width, height;
Create a computeHitbox function (what's bool hasHitbox; for?), and call it on demand, rather than trying to store it and keep it up to date whenever you move the object.
Use const references, not pointers or value copies.
> bool hasCollided(W_Object *other);
> void runIfHit(W_Object *other);
> bool vector2InObject(Vector2 vector);