typedef class, typedef struct в С++ не нужОн. В Си нельзя было написать код вида
struct A {};
A variable; // тут будет ошибка
и приходилось писать либо
struct A{};
struct A variable;
либо
typedef struct A{} A;
A variable;
Т.е. либо всегда и везде перед именем типа писать struct, либо сделать typedef. В С++ такой проблемы нет и typedef используется по прямому назначению именно для создания псевдонимов. Например, чтобы вместо std::map> сделать простой и удобный псевдоним.
В современном С++ лучше использовать using вместо typedef, потому что можно создавать "шаблонные" псевдонимы.