è tanto che non programmo in c++ il problema secondo me sta qui
matr = new Complesso[DIM1][DIM2];
è sbagliata la chiamata al costruttore di Complesso!!!!!!!!!

non so precisamente come risolvere il problema in java lo risolverei con le classi contenitori tipo Vevtor ma non ricordo se tali classi ci sono anche in c++; in c++ lo potresti risolvere con la malloc() ma non ricordo se esiste tale funzione in c++