Estoy escribiendo una pequeña biblioteca de matriz en C++ para operaciones de matriz. Sin embargo mi compilador se queja, donde antes no lo hacía. Este código se dejó en un estante durante 6 meses y entre tanto actualicé mi computadora de debian etch a lenny (g ++ (Debian 4.3.2-1.1) 4.3.2 ) sin embargo, tengo el mismo problema en un sistema Ubuntu con el mismo g ++¿Cómo sobrecargar correctamente el operador << para un ostream?
Aquí es la parte pertinente de mi clase de matriz:
namespace Math
{
class Matrix
{
public:
[...]
friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
}
}
Y la "aplicación":
using namespace Math;
std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {
[...]
}
Este es el error dado por el compilador:
matrix.cpp:459: error: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' must take exactly one argument
Estoy un poco confundido por este error, pero de nuevo mi C++ se ha oxidado un poco después de hacer muchos Java los 6 lun. ths. :-)
Y también debe declararlo dentro del espacio de nombres de Matemáticas (no solo con el uso del espacio de nombres Matemáticas). –
¿Por qué el 'operator <<' tiene que estar en el espacio de nombres de 'Math'? Parece que debería estar en el espacio de nombres global. Estoy de acuerdo en que mi compilador quiere que esté en el espacio de nombres de 'Math', pero eso no tiene sentido para mí. –