02/10/2018, 14:19

Sử dụng hàm bạn (friend) cho 2 Class

Khi bạn khai báo hàm bạn cho 2 class, nếu bạn chưa có kinh nghiệm bạn sẽ dễ gặp lỗi inaccessible. Dấu hiệu theo ví dụ bên dưới: Bạn đã khai báo friend void test(Matrix a, Vector b); trong class Matrix Bạn đã khai báo friend void test(Matrix a, Vector b); trong class Vector ...

Khi bạn khai báo hàm bạn cho 2 class, nếu bạn chưa có kinh nghiệm bạn sẽ dễ gặp lỗi inaccessible.

Dấu hiệu theo ví dụ bên dưới:

  • Bạn đã khai báo friend void test(Matrix a, Vector b); trong class Matrix
  • Bạn đã khai báo friend void test(Matrix a, Vector b); trong class Vector
  • Nhưng chỉ 1 trong 2 truy cập được vùng private

friend

Cách khắc phục

  • Bạn khai báo tên của 2 class Matrix, và Vector ở đầu chương trình chính, sau đó viết nội dung class bên dưới.

friend1

  • Nếu bạn chia file cho từng class, thì hãy làm như sau:

– Trong file .h của file này bạn khai báo class kia, mục đích báo cho trình biên dịch biết class kia có tồn tại.

VD: ở Matrix.h tôi khai báo Class Vector; Và trong Vector.h tôi khai báo class Matrix.h;

Một ví dụ khác đơn giản hơn

Bạn có thể tham khảo thêm tại đây: http://stackoverflow.com/questions/18404299/can-2-classes-share-a-friend-function

0