Vấn đề của tôi:khai báo chuyển tiếp và không gian tên (C++)
Có hai lớp, loại A và B, vì vậy tôi có A.h và A.cpp và B.h và B.cpp. A cần biết B và B cần biết A. Tôi giải quyết nó theo cách sau (tôi không biết tại sao nó có để được như vậy ...)
Ah:
#include "B.h"
class A{ ...
A. cpp:
#include "A.h"
Bh:
#include "A.h"
class A; // forward declaration
class B { ...
B.cpp:
#include "B.h"
Tôi đã sử dụng một tuyên bố chuyển tiếp và nó hoạt động.
Vấn đề là cả hai lớp phải nằm trong vùng tên "ui". Hoặc ít nhất tôi nghĩ rằng đây là ý nghĩa:
A.h:
#include "B.h"
namespace ui{
class A;
}
class A{ ...
B.h:
#include "A.h"
namespace ui{
class B;
}
class B{ ...
này không hoạt động nữa. Tôi phải làm gì bây giờ để làm cho nó hoạt động trở lại với khai báo không gian tên và chuyển tiếp?
Cả hai phải nằm trong không gian tên này. Tôi đang làm việc với Qt và các dòng "namespace ui {" vv là cần thiết. Và cả hai lớp đều cần phải biết nhau. Tôi đã cố gắng chỉ để làm cho điều này:
namespace ui{
class A;
class B;
}
trong cả tiêu đề, nhưng điều này không làm việc ...
Btw: Tất cả Tiêu đề-Files cũng có những "ifndef" -mechanism.
"Điều này không có tác dụng nữa" nghĩa là gì? Vui lòng đăng lỗi chính xác/trình liên kết. – fredoverflow