Well, not much information given.
Your using c++ i see that, any library/engines ? that would greatly narrow our approach towards the problem.
Use one variable for position instead of two
Also Saving X and Y for each image instead of one variable like (int pos) and use it to get image from TileSheet?
//Tile size 32x32
//Tilesheet size 128x128
int pos = 6;
int TileSheetSize = Image_Tile_Sheet.getSize().x / TILE_SIZE; // This would provide size of tilesheet.x as tiles
draw(Tile_List[My_Tile_To_Draw_From_Vector].pos % Tile_Sheet_Size,
Tile_List[My_Tile_To_Draw_From_Vector].pos / Tile_Sheet_Size)//x, y
Now if you wandering what did this do?
Let me try to explain.
Image was 128x128 we divided by 32 we get 4x4
00 01 02 03
04 05 06 07
08 08 10 11
12 13 14 15
We grab the 06 witch would evaluate to 2 ints (x = 3 or x = 64, y = 2 or y = 32)
Tip for animated tiles
Also considering the animated tiles.
Point all tiles to one pointer / reference / sprite / texture that will hold the animation image, so in process of changing animated tile you just change one tile and all using this data instead of looping true all tiles, looking for specified ones and updating them all.
My thought on your approach
My thought is to have a Tileframe class that will just have X/Y coordinate for where from the image the picture will be drawn. The tile class will then have a list (vector) of tileframes that animation will loop over. The map class will then have a list of tiles. The map will handle all the saving and loading of map information to and from a binary file.
Does this sound like a good approach?
Define good. Most efficient No, Able to work this way YES, Would i do it this way NO.
But have in mind that (Thinking of something on your own, creating on your own) will allow you to develop a sense of (oh this is good, oh this is bad)
When i was starting to program my cousin shown me how to output to console and told me to output 100 times same text onto console.
After i finished that he shown me 'for' loop (hes asshole), doing something hard way is not without it benefits, you will find creative ways of dealing with code even then, and learning to do stuff efficiently comes much on its own.
I mean who wants to write same code 10 times? make a function for it and use it 10 other places to save up to 10x in time - function creation time = profit.
Am pretty sure most of "Experienced" programers would be able to improve your idea / design, but experience gained from you doing it the way you thought off, priceless. Am most sure you will notice flaws and think of better ideas as you progress.