【发布时间】:2014-06-12 13:14:00
【问题描述】:
我正在尝试在另一个头文件中使用对象的类型别名,而不包括头文件。
我的简化版代码是:
// 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*){}
我不想在B.h 中再次写using Vector=std::vector<int>;,因为它的定义必须与A.h 中Vector 的定义相同,并且它可能会在未来发生变化,我可以'不包括它,因为我的代码有循环依赖。
using 可以在 c++11 中前向声明吗?
【问题讨论】:
-
你需要在
#include "A.h"B.h。 -
@juanchopanza 它有循环依赖。所以我不能这样做
-
一句话,没有。不要重复声明,而是将其分解为单独的标题并包含在 A 和 B 中。
-
你不能转发声明
typedefs(你的using只是一个typedef)。 -
你为什么不解决这个问题来表明这一点?
标签: c++ c++11 vector stl forward-declaration