声明 C++ 中的说明符冲突

Conflicting specifiers in declaration c++

我用的是数据结构bimap

typedef boost::bimap< std::string, int > hash_bimap;
typedef hash_bimap::value_type position;
hash_bimap perm;

它在主文件中工作正常。但是,我有兴趣在头文件中使用它,以便在任何其他 .cpp 文件中访问它。

当我尝试像

那样在 my.h 中做到 extern
extern typedef boost::bimap< std::string, int > hash_bimap;
extern typedef hash_bimap::value_type position;
extern hash_bimap perm;

conflicting specifiers in declaration of ‘hash_bimap’ extern typedef boost::bimap< std::string, int > hash_bimap;

(详细说明 kfsone 的评论)typedefs 不需要是外部的,只需实际变量:

typedef boost::bimap< std::string, int > hash_bimap;
typedef hash_bimap::value_type position;
extern hash_bimap perm;