Tôi có những nghi ngờ sau về việc sử dụng tệp tiêu đề.Các phương pháp hay nhất để sử dụng các tệp tiêu đề C++
1 - Bao gồm các lính gác đặt sau bình luận
/* Copyright Note and licence information (multiple lines) */
#ifndef FOO_H
#define FOO_H
// Header file contents
#endif
Herb Sutter đã giảng trong "C++ tiêu chuẩn mã hóa" đặt mã như trên là có vấn đề. Anh ta nói rằng câu lệnh "#ifndef" sẽ xuất hiện trong dòng đầu tiên của tệp tiêu đề. Tôi đã không cảm thấy điều này là thuyết phục. Điều này tiếp theo là các bạn/gals trong các tập tin tiêu đề?
2 - Sử dụng không gian tên trong các tập tin tiêu đề
#ifndef FOO_H
#define FOO_H
namespace FooNameSpace{
// Header file contents
}
#endif
Là mã trên sử dụng thực tế có đúng không? Ý tôi là, bạn có sử dụng không gian tên trong các tệp tiêu đề không? Tôi biết tại sao nhập khẩu một không gian tên trong tập tin tiêu đề là vô nghĩa nhưng những gì về một tuyên bố như trên?
Nếu phương pháp trên là phương pháp chính xác, bạn làm cách nào "khai báo chuyển tiếp" của lớp học trong một không gian tên khác? Là nó như
#ifndef FOO_H
#define FOO_H
namespace AnotherNameSpace{
class AnotherFoo; // forward declaration
}
namespace FooNameSpace{
// Use AnotherFoo here
}
#endif
Các "về phía trước khai" là phương pháp duy nhất để tránh "cyclic phụ thuộc", có đúng không?
Trong một tập tin nguồn, sử dụng "sử dụng" không phải là sai ở tất cả, nhưng trong một tập tin tiêu đề, nó là rất sai. –