Stai facendo confusione con gli indici. E anche l'operatore << ha gli indici in odine inverso.
L'indice esterno è m ( da cui ricavi poi lo spazio per i vettori di dimensioni n)
codice:Canvas::Canvas(int i, int j){ m=i; n=j; col=new colore*[m]; for(int i=0; i<m; i++) col[i]=new colore[n]; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) col[i][j]=bianco; } cout << "Costruttore\n"; } Canvas::~Canvas(){ for(int i=0; i<n; i++) delete col[i]; delete[] col; cout << "Distruttore\n"; }