すべてのクラスをバージョン管理された名前空間に配置するC++サードパーティライブラリを使用しています。これを呼び出しましょうtplib_v44
。また、一般的な名前空間エイリアスも定義します。
namespace tplib = tplib_v44;
ジェネリック名前空間を使用して、自分の.hファイルでライブラリのメンバーを前方宣言する場合...
namespace tplib { class SomeClassInTpLib; }
...サードパーティライブラリ(後で.cpp実装ファイルに含まれています)のヘッダーでコンパイラエラーが発生します。
error C2386: 'tplib' : a symbol with this name already exists in the current scope
バージョン固有の名前空間を使用すると、すべてが正常に機能しますが、...ポイントは何ですか?これに対処するための最良の方法は何ですか?
[編集]将来の視聴者のための参考までに、これはICUライブラリでした。解決策(少なくとも私の状況では)は、受け入れられた回答へのコメントにあります。