Hỏi về sử dụng class trong c++

Chào mọi người. Mình đang tập tành viết về quản lý thư viện bằng c++.
Hiện tại mình có 2 class là User và Book. User được khai báo trước và Book được khai báo sau.
Mình muốn tạo một queue kiểu Book trong User và đồng thời cũng tạo một queue kiểu User trong Book mà không bị lỗi not declared thì phải xử lý thế nào ạ ?
Mình cảm ơn.

Không biết bạn gặp lỗi như thế nào?
Chứ theo như code sample này thì chỉ cần forward declare là hoàn toàn chạy bình thường mà?

3 Likes

https://paste.in/p6wEC2
Mình khai báo như thế này thì ở class User bị gặp lỗi Book was not declared in this scope. Mình muốn hỏi có cách nào dùng được class Book trong User mà không cần đổi thứ tự khai báo không.

Có sự khác biệt lớn giữa “một queue kiểu Book trong User” và “một object kiểu Book trong User”.
Với yêu cầu như code bạn đưa thì hoàn toàn không thể nhé. Bạn cần phải chuyển bk hoặc/và user về dạng pointer hoặc reference hoặc wrap lại trong 1 container phù hợp và phải forward declare như trong code bên trên của mình.

5 Likes

Cho mình hỏi “wrap lại trong 1 container” là như thế nào ạ ? :sweat_smile:

Như trong code bên trên, chính là wrap trong std::queue, ngoài ra, cũng có thể wrap trong std::vector, std::list, std::set, std::map, std::shared_ptr, std::reference_wrapper... vân vân và mây mây

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?