有没有办法在没有引用其模板类型的情况下转发声明指向类的指针?

时间:2017-03-27 17:20:08

标签: c++ pointers forward-declaration

在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;然后在各个点投下我宁愿不失去类型安全。任何确实失去类型安全的解决方案都不能解决我的问题。

1 个答案:

答案 0 :(得分:0)

来自Jean-BaptisteYunès对这个问题的评论,你可以转发声明一个没有A的完整定义的std :: vector。这意味着它有效:

class A;
typedef std::vector<A> AVector;
class B {
    AVector *myVector;
};