Tôi đang viết một thư viện ma trận nhỏ trong C ++ cho các hoạt động ma trận. Tuy nhiên trình biên dịch của tôi phàn nàn, nơi mà trước đó nó không. Mã này đã được để trên kệ trong 6 tháng và ở giữa tôi đã nâng cấp máy tính của mình từ debian etch lên lenny (g ++ (Debian 4.3.2-1.1) 4.3.2) tuy nhiên tôi có cùng một vấn đề trên hệ thống Ubuntu có cùng g ++ .
Đây là phần có liên quan của lớp ma trận của tôi:
namespace Math
{
class Matrix
{
public:
[...]
friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
}
}
Và "thực hiện":
using namespace Math;
std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {
[...]
}
Đây là lỗi được đưa ra bởi trình biên dịch:
matrix.cpp: 459: error: 'std :: ostream & Math :: Matrix :: toán tử << (std :: ostream &, const Math :: Matrix &)' phải có chính xác một đối số
Tôi hơi bối rối vì lỗi này, nhưng một lần nữa, C ++ của tôi đã bị rỉ sét một chút sau khi thực hiện nhiều Java trong 6 tháng. :-)