@ Jean-MichaëlCelerier Тип decl гарантирует, что этот оператор используется только при наличии t :: print. В противном случае он попытался бы скомпилировать тело функции и выдать ошибку компиляции.

у небольшую матричную библиотеку на C ++ для матричных операций. Однако мой компилятор жалуется, где раньше этого не было. Этот код оставлялся на полке в течение 6 месяцев, и между тем я обновил свой компьютер с debian etch до lenny (g ++ (Debian 4.3.2-1.1) 4.3.2), однако у меня та же проблема в системе Ubuntu с тем же g ++ ,

Вот соответствующая часть моего класса матрицы:

namespace Math
{
    class Matrix
    {
    public:

        [...]

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

И «реализация»:

using namespace Math;

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

    [...]

}

Это ошибка, выданная компилятором:

matrix.cpp: 459: ошибка: 'std :: ostream & Math :: Matrix :: operator << (std :: ostream &, const Math :: Matrix &)' должен принимать ровно один аргумент

Я немного сбит с толку этой ошибкой, но опять же мой C ++ стал немного ржавым после того, как я много работал за те 6 месяцев. :-)

Ответы на вопрос(5)

Ваш ответ на вопрос