new[] returns a pointer to the first element of the array. In this case, you're creating a 1D array of 1D arrays, so it returns a pointer to the first 1D array (that is, to the first row). The following compiles (assuming colls is a compile-time constant)
int (*name)[colls] = new int[rows][colls];
demo: https://ideone.com/jGy8e
If your second dimension is not known at compile time, you cannot construct a 2D array type.
Your options, from best to worst:
An actual matrix from a matrix library (e.g. from boost)
Self-written Matrix class using 1D underlying storage (vector or valarray)
Vector of vectors
1D array of pointers to individually-allocated 1D arrays (as suggested by another answer)