If I understand you correctly, all you want to do is to distinguish between direction vectors and positions for sake of better readability of your code. Since points and vectors are essentially the same I propose to write one vector class and add a typedef for points. That way everything works out of the box but you can still use "Point2D" so the reader knows you refer to a point rather than a direction vector.
While you're at it you should consider writing a template class so you can have other than float vectors.
template<class T> vector2d