Como sobrecarregar corretamente o << operador para um ostream?

Estou escrevendo uma pequena biblioteca de matrizes em C ++ para operações de matriz. No entanto, meu compilador reclama, onde antes não o fazia. Este código foi deixado em uma prateleira por 6 meses e entrei atualizei meu computador do debian etch para o lenny (g ++ (Debian 4.3.2-1.1) 4.3.2), no entanto, tenho o mesmo problema em um sistema Ubuntu com o mesmo g ++ .

Aqui está a parte relevante da minha classe de matriz:

namespace Math
{
    class Matrix
    {
    public:

        [...]

        friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
    }
}

E a "implementação":

using namespace Math;

std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {

    [...]

}

Este é o erro fornecido pelo compilador:

matrix.cpp: 459: erro: 'std :: ostream & Math :: Matrix :: operator << (std :: ostream &, const Math :: Matrix &)' deve ter exatamente um argumento

Estou um pouco confuso com esse erro, mas, novamente, meu C ++ ficou um pouco enferrujado depois de fazer muito Java nesses 6 meses. :-)

questionAnswers(5)

yourAnswerToTheQuestion