我尝试在另一个标头中使用对象的类型别名而不包含头文件。
我的简化版代码是:
// 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
,因为它的定义必须与Vector
中A.h
的定义相同可能会在未来中发生变化而我无法包含它,因为我的代码具有循环依赖。
在c ++ 11中是否可以使用using
的前向声明?
答案 0 :(得分:7)
这是不可能的,但以下可能是一种解决方法。
// Common.h
...
#include <vector>
using Vector=std::vector<int>;
...
之后,您在Common.h
和A.h
中加入B.h
。