2013-02-20 23 views
5

Trong ứng dụng của chúng tôi có các lớp được sử dụng chung (ví dụ: một lớp chứa các tham số cấu hình dự án) như dưới đây.Truy cập một lớp sử dụng chung từ tất cả các dự án

class DB{ 
public: 
int projectVersion 
int somethingSoMuchImportantAllOverTheProject 
}; 
extern DB* pDB; 

Vì tất cả các lớp khác sẽ sử dụng lớp này, tất cả đều cần truy cập vào lớp này bằng cách nào đó. Giải pháp của chúng tôi là đặt "extern DB * pDB;" dưới tệp tiêu đề của nó để bất cứ ai cần nó, sẽ có thể truy cập nó sau khi bao gồm tiêu đề. Tôi nghĩ có lẽ có một giải pháp tốt hơn và muốn có được ý tưởng của bạn cho trường hợp chung này.

+1

Có phải _have_ là con trỏ không? –

+4

Tôi đã xóa thẻ 'c', điều này rõ ràng là C++. – unwind

+1

Những gì bạn đang nói về là một biến toàn cầu đơn giản (trong một hình thức khác). Vì vậy, để đề xuất một lựa chọn tốt hơn, cần phải xem toàn bộ hình ảnh vì nó là một xem xét thiết kế, không chỉ cú pháp. – KBart

Trả lời

1

Đó là một singleton. Bạn có thể tìm thấy rất nhiều cuộc thảo luận về nó, nhưng một điều quan trọng là, ẩn các nhà xây dựng của lớp để người dùng của lớp buộc phải sử dụng một đối tượng.

+0

Singleton pattern sẽ được cải thiện tốt nhưng tôi cũng hỏi về cách liên kết đối tượng này với các lớp khác tốt hơn. –

+0

Tôi không chắc chắn những gì bạn có nghĩa là "liên kết" nó ... Tôi giả sử bạn không có nghĩa là một phần liên kết của quá trình xây dựng. Chỉ cần "sử dụng" trực tiếp trong mã của bạn, ví dụ: kiểm tra phiên bản qua 'pDB-> projectVersion'. – mark

+0

Tôi đã đề cập đến điều này bởi vì tôi biết singleton là về làm cho đối tượng duy nhất bằng phương tiện chỉ cho phép một ví dụ của nó. Nhưng những gì tôi không chắc chắn đặt con trỏ đối tượng để tiêu đề như "extern DB * pDB;" trong ví dụ. –

Các vấn đề liên quan