typedef - да. Но не каждый любит плодить виртуальные сущности. А в представленном Вами варианте с хедером - как раз лаконично и приватно. Но про "прозрачное создание" пользовательских типов при помощи define - категорически не согласен. Этот метод предали анафеме еще в прошлом тысячелетии. И на это есть причина.