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)
{
}