Diferença entre struct e enum?

Eu sou novato em C ++, e quero entender qual é a diferença entre dizer

typedef enum stateUpdateReasonCode
{
    a=1,
    b=2,
    c=3
} StateUpdateReasonCode;

e

struct StateUpdateReasonCode
{
   a=1,
   b=2,
   c=3
};

Qual é a diferença entre eles? Wy nós usaríamos um sobre o outro?

Atenciosamente

questionAnswers(4)

yourAnswerToTheQuestion