Another unimportant advice: In sf::Vertex and sf::RenderStates constructors, you call the parameters thePosition, theTexture etc. I assume you did that to avoid name collisions with the members, but in fact there are none.
This is valid and defined C++, the members are correctly initialized:Vertex::Vertex(const Vector2f& position, const Color& color, const Vector2f& texCoords) :
position (position),
color (color),
texCoords(texCoords)
{
}