我环顾四周,我无法确定其他类似问题是否回答此问题。是否可以转发声明名称空间内的typedef?
// lib.h
namespace lib_namespace
{
struct lib_struct
{
typedef std::vector<LibObject> struct_value;
};
typedef lib_struct::struct_value lib_value; // compiler points here
};
// my.h
// attempt at forward declaration
namespace lib_namespace { class lib_value; };
...
// my.cpp
#include "lib.h"
我得到一个重新定义编译错误,这是可以理解的,但有没有办法来转发声明的typedef?
我的目的是避免添加lib.h作为我正在创建的库之外的依赖项。也许有更好的方法来实现这一目标?
编辑:为了澄清,我试图避免将额外的包含目录行添加到所有项目文件,因为我使用的是第三方库而使用我创建的库,上述情况是我被卡住了。因此,如果我在my.cpp
中包含lib.h
,但不包括my.h
。