Hmm i maybe get what your problem is and my suggestion is to do:
you can have a class named TileMap for example with a sfImage tileImage.
then you have a class for each tile which have a sfSprite and a create function with a sfImage pointer: Create(sfImage* tileImage);
So you can set the sprite to the image pointer like this:
tileSpriteName.SetImage(*tileImage) in the Create function. Then you can set the sub rect in each tile using the same image.
Also in the tileMap class when you call the Create function it should(could) look like this: tile
Hope it helped...