Ich schreibe eine kleine Matrixbibliothek in C++ für Matrixoperationen. Allerdings beschwert sich mein Compiler, wo vorher nicht. Dieser Code wurde für 6 Monate in einem Regal gelassen und zwischendurch habe ich meinen Computer von debian etch auf lenny aktualisiert (g ++ (Debian 4.3.2-1.1) 4.3.2 ), aber ich habe das gleiche Problem auf einem Ubuntu-System mit dem gleichen g ++.Wie kann man den << Operator für einen Ostream richtig überladen?
Hier ist der relevante Teil meiner Matrix-Klasse:
namespace Math
{
class Matrix
{
public:
[...]
friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
}
}
Und die "Umsetzung":
matrix.cpp:459: error: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' must take exactly one argument
:
using namespace Math;
std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {
[...]
}
Dies ist der Fehler vom Compiler gegeben ist Ich bin ein wenig verwirrt durch diesen Fehler, aber dann wieder mein C++ ist ein bisschen eingerostet, nachdem ich viel Java diese 6 Mon gemacht habe ths. :-)
Und Sie sollten es auch im Math-Namespace deklarieren (nicht nur mit einem Verwenden von Namespace Math). –
Warum muss der Operator '' im Namensraum von 'Math' stehen? Es scheint, dass es im globalen Namespace sein sollte. Ich stimme zu, dass mein Compiler es im Namensraum von 'Math' haben will, aber das ergibt für mich keinen Sinn. –