Piu che altro dovresti inserirla. Prima del system("PAUSE"); metti delete[] Pmat.
Per il typedef. Non per scoraggiarti ma messo così non serve a granché.
Non si può ridefinire un typedef, quindi appena scriverai:
typedef int T sotto a typedef char T, con l'idea di riutilizzare il codice, otterrai solo un errore di compilazione.
Quel che vuoi fare si ottiene con i template, ma non sapendo quanto li conosci preferisco evitare approfondimenti prematuri.