Một trong các lớp trong chương trình của tôi sử dụng một số thư viện của bên thứ ba. Đối tượng thư viện là thành viên riêng tư của lớp học của tôi:Tiêu đề C++ - tách biệt giữa chi tiết giao diện và chi tiết triển khai
// My.h
#include <3pheader.h>
class My
{
...
private:
3pObject m_object;
}
Vấn đề với điều này - bất kỳ đơn vị nào khác trong chương trình của tôi sử dụng lớp học của tôi phải được cấu hình bao gồm tiêu đề 3p. Di chuyển đến một loại 3p sẽ gây nguy hiểm cho toàn bộ xây dựng ... Tôi thấy hai cách để sửa lỗi này - một là để làm cho 3pObject extern và biến m_Object thành một con trỏ, được khởi tạo trong hàm tạo; thứ hai là tạo các lớp "giao diện" và "nhà máy" và xuất chúng ...
Bạn có thể đề xuất một cách khác để giải quyết điều đó không?
Bất kỳ lý do nào không sử dụng boost :: scoped_ptr? – grigy
Không có gì cụ thể - Tôi đã quen với việc sử dụng auto_ptr - nó có lẽ phù hợp hơn trong trường hợp này để sử dụng scoped_ptr vì không có chuyển quyền sở hữu –