Since you're only adding one item to the vector in your code, I don't believe that's a problem, but it certainly could be in the future.
So, for future reference: When you add an item to a vector, it may not have enough memory initially to store it. If it doesn't it allocates more memory, copies/moves what was in the old memory to the new memory, and releases the old memory. This means that any pointers or references to those objects would no longer be referencing valid objects. If those references or pointers are then used/dereferenced the result is undefined behavior which will hopefully just crash the program instead of appearing to work correctly while silently formatting your hard drive.
To avoid that, make sure all textures are loaded before you attach any sprites to them, or use a container like std::deque for which it isn't an issue.
Change your implementation of Engine::LoadTextures to:
void Engine::LoadTextures()
{
sf::Texture texture;
// Load tile textue
if ( !texture.loadFromFile("grassTile.png"))
throw "Unable to open file: grassTile.png" ;
// Add the image to imageManager
textureManager->AddTexture(texture);
// Initialize grassTile as a new tile and set it's texture
grassTile = new Tile(textureManager->GetTexture(0));
}
Run, report, and remember to check return values from functions.