Tôi thường sử dụng phía trước tuyên bố chủ yếu, nếu tôi có một lớp học mà không cần định nghĩa hoàn chỉnh trong tập tin .hppForward Tuyên bố của các biến/classes trong namespace std
Ex)
//B.hpp
namespace A_file {
class A;
}
namespace B_file {
class B {
public:
B();
private:
A *ptr_to_A;
}
}
//B.cpp
#include "A.hpp"
using namespace A_file;
namespace B_file {
B(int value_) {
*ptr_to_A = new A(value_);
}
int some_func() {
ptr_to_A->some_func_in_A();
}
}
tôi viết này loại mã. Tôi nghĩ rằng, nó sẽ tiết kiệm bao gồm toàn bộ hpp một lần nữa. (Cảm thấy tự do để bình luận, nếu bạn điều, điều này là không lành mạnh)
Có cách nào mà tôi có thể làm tương tự cho các đối tượng/lớp trong không gian tên std? Nếu có cách nào, liệu có ổn hay không có tác dụng phụ không?
+1. Dự đoán đủ, tiền lệ được đặt bởi '' cũng là phương pháp hay nhất: thích có thêm tiêu đề khai báo bổ sung, được bao gồm bởi tiêu đề "bình thường" để kiểm tra thời gian biên dịch cho hiệu lực liên tục và bởi khách hàng chỉ cần khai báo chuyển tiếp . Nó phải "sống" và được duy trì với thư viện có mã chuyển tiếp tuyên bố, chứ không phải mã khách hàng! Lý do chính xác được đưa ra trong các GotW trên ổ đĩa này: cấu trúc có thể trở thành typedefs của mẫu, mẫu có thể thêm đối số vv .. –