Tôi tự hỏi nếu nó có thể chuyển tiếp khai báo một enum được định nghĩa trong phạm vi lớp khác. Ví dụ, hãy xem xét những điều sau đây:C++ Chuyển tiếp khai báo lớp liệt kê vi phạm
//A.h
class A
{
public:
enum class type: unsigned long { /*some stuff*/ }
};
Bây giờ, trong tiêu đề khác tôi muốn để chuyển tiếp tuyên bố 'loại' enum (giả sử lớp B dưới đây có một chức năng mà làm điều gì đó với A :: type)
//B.h
enum A::type; //use of undefined type 'A'
class B
{
public:
UseTypeEnum(A::Type&);
};
này không làm việc một trong hai:
//B.h
class A;
enum A::type; //still use of undefined type
class B...
không có vấn đề nếu enum được khai báo ở phạm vi toàn cầu trong Ah
Có cách nào để thực hiện việc này không?
các bảng liệt kê phải được khai báo là thành viên tĩnh, bạn có chắc là bạn không thể viết chương trình bằng cách thoát khỏi khai báo chuyển tiếp enums không? –
cho 'enum': http://stackoverflow.com/questions/2238170/forward-declaration-of-nested-enum –