You have two snakes.
There's the first snake in main.cpp which is the one being updated and drawn.
Then there's a second snake in fruit.h inside of the Elma class. This is the snake that Elma's collision() is testing against, but it isn't updated so it never moves.
What I'd do is remove the snake member from Elma. Then change the collision function to take a snake reference like this:
void collision(mySnake &snake)
Now in the main.cpp you can do this:
elma.collision(snake);