class Namespace::Class;
Tại sao tôi phải làm điều này?:
namespace Namespace {
class Class;
}
Sử dụng VC ++ 8.0, trình biên dịch có vấn đề:
lỗi C2653: 'Không gian tên': không phải là tên lớp hoặc không gian tên
Tôi giả sử rằng vấn đề ở đây là trình biên dịch không thể biết Namespace
được là một lớp hay một không gian tên? Nhưng tại sao điều này lại quan trọng vì nó chỉ là một tuyên bố chuyển tiếp?
Có cách nào khác để chuyển tiếp khai báo một lớp được định nghĩa trong một số không gian tên không? Cú pháp trên có cảm giác như tôi đang "mở lại" không gian tên và mở rộng định nghĩa của nó. Điều gì xảy ra nếu Class
không thực sự được định nghĩa trong Namespace
? Điều này sẽ dẫn đến một lỗi tại một số điểm?
A::B
một A
là một định danh không gian tên thay vì một tên lớp?
Namespace
là một lớp hoặc không gian tên. Chỉ cần không nhận được bất cứ nơi nào gần gợi ý về khả năng có thể hình dung bắt đầu một cuộc chiến ngọn lửa ngôn ngữ theo cú pháp.