Gần đây tôi đã bị mắc kẹt trong một tình huống như thế này:Chuyển tiếp tuyên bố của các loại/lớp lồng nhau trong C++
class A
{
public:
typedef struct/class {...} B;
...
C::D *someField;
}
class C
{
public:
typedef struct/class {...} D;
...
A::B *someField;
}
Thông thường, bạn có thể khai báo một tên lớp:
class A;
Nhưng bạn không thể mong khai báo một kiểu lồng nhau, sau đây gây ra lỗi biên dịch.
class C::D;
Bất kỳ ý tưởng nào?
Tại sao bạn cần điều đó? Lưu ý rằng bạn có thể chuyển tiếp khai báo nếu nó là một thành viên của cùng một lớp đang được định nghĩa: class X {class Y; Y * a; }; lớp X :: Y {}; –
Lỗi hấp dẫn. –
Giải pháp này làm việc cho tôi (không gian tên C {class D;};): http://stackoverflow.com/questions/22389784/c-code-fails-to-compile-after-upgrading-xcode-5-0-5 -1-forward-declaration –