Trình biên dịch g ++ phàn nàn với lỗi này khi tôi tuyên bố một người bạn thusly:một lớp-key phải được khai báo khi tuyên bố một người bạn
friend MyClass;
thay vì
friend class MyClass;
Tại sao nên việc lớp từ khóa được yêu cầu? (trình biên dịch Borland C++, BTW, không yêu cầu nó.)
Trình biên dịch có thể đơn giản tra cứu MyClass trong bảng ký hiệu và cho biết nó được khai báo là lớp? (nó rõ ràng là đang tìm kiếm vì nó phàn nàn khi MyClass không được khai báo)
Nó không giống như nó đang khai báo lớp: Tôi vẫn phải khai báo lớp trên hoặc ít nhất đã chuyển tiếp tuyên bố nó.
Nó sẽ làm cho ý nghĩa với tôi (sẽ là tuyệt vời thực sự) nếu
friend class MyClass;
làm cho một tuyên bố về phía trước, nếu cần thiết, nếu không nó chỉ có vẻ như muối cú pháp đối với tôi.
Tôi đã được vui vẻ sử dụng bạn báo cáo mà không có từ khóa lớp hoặc struct không có khiếu nại trình biên dịch cho gần 20 năm. Đây có phải là một cái gì đó khá mới?
20 năm! Bạn phải đã làm việc với Bjorn. –
Tôi đã sử dụng C-Front khi tôi tốt nghiệp năm 1989. Tôi đã sử dụng chủ yếu Borland C++ kể từ khoảng năm 1991. –
@Martin: Bjorn ?! Lol. –