在c ++ 11中使用前向声明

时间:2014-06-12 13:14:00

标签: c++ c++11 vector stl forward-declaration

我尝试在另一个标头中使用对象的类型别名而不包含头文件。

我的简化版代码是:

// A.h
    #include <vector>
    using Vector=std::vector<int>;

====================================================

//B.h
using Vector;//forward declaration but not working !(Vector has not beed declared)
int foo(Vector*);

====================================================
//B.cpp
#include "A.h"
void foo(Vector*){}

我不想再次在using Vector=std::vector<int>;中写B.h,因为它的定义必须与VectorA.h的定义相同可能会在未来中发生变化而我无法包含它,因为我的代码具有循环依赖

在c ++ 11中是否可以使用using的前向声明?

1 个答案:

答案 0 :(得分:7)

这是不可能的,但以下可能是一种解决方法。

// Common.h
...
#include <vector>
using Vector=std::vector<int>;
...

之后,您在Common.hA.h中加入B.h