3

Visual Studio 2012 を使用して一部の Boost クラスを含むコードをコンパイルしようとしましたが、複数の宣言に関するエラーが常に発生しています。

1>c:\boost\boost_1_53_0\boost\tr1\memory.hpp(43): error C2874: using-declaration causes a multiple declaration of 'boost::bad_weak_ptr'

これは、boost\tr1\memory.hpp から含まれている他のいくつかの Boost クラスで発生します。

追加のインクルード ディレクトリとライブラリ ディレクトリが適切に配置されているかどうかを確認しましたが、問題は解決していません。誰でも何か考えがありますか?ありがとう。

4

1 に答える 1

0

問題は、shared_ptr がC++11の stdおよびstd::tr1 の一部であることです。VS2012 は (ほとんど) C++11 に準拠しているため、boost\tr1\memory.hpp とメモリ ヘッダーの間に名前空間の衝突があるようです。

Mihai Todor が指摘したように、それは本当に using ディレクティブに関連している可能性があると思います。私の場合、boost memory.hpp インクルードを削除できました。

于 2013-07-25T11:28:25.843 に答える