Đối với dự án cụ thể này, tôi không thể sử dụng các tính năng C++ 11 (ví dụ: decltype
) vì trình biên dịch chưa hỗ trợ chúng. Tôi cần phải có khả năng cung cấp các lớp học hiện tại như một tham số mẫu, tốt nhất là trong vòng một macro mà không cần một cuộc tranh cãi (xem dưới đây), mà không mặc quần áo lên tờ khai class
hoặc ẩn dấu ngoặc nhọn vvLàm cách nào để truy xuất loại lớp cơ sở trong C++?
class Foo: private Bar<Foo> {
MAGIC //expands to using Bar<Foo>::Baz; and some others
public:
void otherFunction();
//... the rest of the class
};
Lý tưởng nhất, tôi 'd như thế này hoạt động rất giống với macro Q_OBJECT
của Qt, nhưng không giới thiệu một bước biên dịch trước và các lớp được tạo liên quan khác. typeid
có thể hữu ích trong thời gian chạy, nhưng mục tiêu của tôi là hoàn thành tất cả điều này khi xây dựng.
Làm cách nào để viết macro MAGIC
để tôi không cần lặp lại tên lớp mỗi lần?
Câu hỏi này có vẻ là phiên bản C++ 03 của "[Tôi có thể triển khai kiểu tự trị' tự' trong C++ không?] (http://stackoverflow.com/q/21143835/ 560648) " –
Tâm trí nếu tôi thay đổi tiêu đề thành * base clase *? * kèm theo lớp * làm cho nó có vẻ như bạn đang làm tổ và loại ra khỏi lớp bên ngoài. – NathanOliver
Câu hỏi 'tự' trông rất giống nhau, nhưng nó không giống như bất kỳ giải pháp được đề xuất nào hoạt động trong C++ 03, như bạn đã lưu ý. Chắc chắn thay đổi tiêu đề nếu nó sẽ làm cho nó rõ ràng hơn. – multipleinterfaces