thể trùng lặp:
Forward declaration of nested types/classes in C++Làm cách nào để chuyển tiếp khai báo lớp bên trong?
Tôi có một lớp học như vậy ...
class Container {
public:
class Iterator {
...
};
...
};
Ở những nơi khác, tôi muốn vượt qua một container :: Iterator bằng cách tham khảo, nhưng tôi không muốn bao gồm tệp tiêu đề. Nếu tôi cố gắng chuyển tiếp khai báo lớp, tôi sẽ nhận được các lỗi biên dịch.
class Container::Iterator;
class Foo {
void Read(Container::Iterator& it);
};
Biên dịch mã trên cho ...
test.h:3: error: ‘Iterator’ in class ‘Container’ does not name a type
test.h:5: error: variable or field ‘Foo’ declared void
test.h:5: error: incomplete type ‘Container’ used in nested name specifier
test.h:5: error: ‘it’ was not declared in this scope
Làm thế nào tôi có thể về phía trước tuyên bố lớp này vì vậy tôi không cần phải bao gồm các tập tin tiêu đề mà tuyên bố lớp Iterator?
Lớp cơ sở chung là giải pháp được sử dụng nhiều nhất ở phần cuối của tôi. – Coyote
Bạn có thể sử dụng bạn bè để giải quyết vấn đề này nếu muốn. –
Lỗi: http: //en.cppreference.com/w/cpp/language/nested_types – Nikerboker