【发布时间】:2012-02-28 04:51:34
【问题描述】:
我环顾四周,无法确定其他类似问题是否回答了这个问题。
// 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。
【问题讨论】:
标签: c++ struct typedef forward-declaration