I think for your matrix operations, all you would need is
1 2 3 4 5 6 7
for(unsignedlong i = 0; i < MAXROWS; ++i)
{
for(unsignedlong l = 0; l < MAXCOLS; ++l)
{
//Do stuff with elements[i][l] and array[i][l] or other.elements[i][l]
}
}
I wonder where you got this code from, then. People usually don't teach operator overloading until way after there's a good understanding of the non-overloaded operators and their use; this code is more advanced that what you seem to know. Just sayin'.
Anyways, you're assigning a constant (3) the value of... wait a sec... something which doesn't seem to exist. Matrix::m::3 does not exist.