在foo.h中:
#include <vector>
class A {
int x;
};
typedef std::vector<A> AVector;
我想要的是把它放在bar.h中:
#include <vector>
<<< some forward declaration of AVector here>>>;
class B {
AVector *myVector;
};
我想转发声明&#34; AVector&#34;在没有bar.h的bar.h中,必须包含A类的定义。由于B类只需要知道它是指针而不是指针内的细节,我希望有一些方法来声明它。
注意:我知道我可以宣布&#34; void *&#34;然后在各个点投下我宁愿不失去类型安全。任何确实失去类型安全的解决方案都不能解决我的问题。
答案 0 :(得分:0)
来自Jean-BaptisteYunès对这个问题的评论,你可以转发声明一个没有A的完整定义的std :: vector。这意味着它有效:
class A;
typedef std::vector<A> AVector;
class B {
AVector *myVector;
};