Tôi muốn giảm thiểu việc sử dụng #include
trong các tệp tiêu đề của tôi, sử dụng các khai báo chuyển tiếp bất cứ khi nào có thể và tôi tin rằng đây được coi là thực hành tốt.Các con trỏ thông minh có phá vỡ nguyên tắc giảm thiểu #includes trong các tệp tiêu đề không?
Nó hoạt động tuyệt vời nếu tôi có một phương pháp kê khai như:
bool IsFlagSet(MyObject *pObj);
Tuy nhiên nếu tôi có typedef Ptr<MyObject> MyObjectPtr
trong MyObject.h
và những thay đổi API để:
bool IsFlagSet(MyObjectPtr pObj);
Tôi không phải bây giờ có để #include "MyObject.h"
? Có cách nào xung quanh điều này, hoặc là nó chỉ là giá một trả tiền cho việc sử dụng con trỏ thông minh?
Tại sao không 'bool IsFlagSet (Ptr pObj); '? –
Nếu bạn vượt qua con trỏ thông minh bằng cách tham chiếu, nó sẽ không hoạt động như trước? –
P.S. Trừ khi chức năng đang thay đổi quyền sở hữu của con trỏ thông minh, không cần sử dụng con trỏ thông minh trong giao diện. Sử dụng một cái câm thay vào đó và sử dụng 'get' của con trỏ thông minh tại trang gọi. –