shared_ptr
とSTLを頻繁に使用するC++コードがあります。共通ヘッダはC++ 0x std :: shared_ptr対boost :: shared_ptr
#include<boost/shared_ptr.hpp>
using boost::shared_ptr; // for shared_ptr
using namespace std; // for STL
は、私はCに切り替えたかっ++ 0xのは今-std=c++0x
でのgcc 4.6を使用して、言語機能を利用することを言います。しかし、std::shared_ptr
もあり、不特定のためのあいまいさにつながる。shared_ptr
(boost::shared_ptr
対std::shared_ptr
)。
このように、代わりにstd::shared_ptr
への切り替え:
/usr/include/boost/python/object/make_ptr_instance.hpp:30:52: error: no matching function for call to 'get_pointer(const std::shared_ptr<Cell>&)'
マイ:
#include<memory>
using namespace std; // for STL; also imports std::shared_ptr
その後、私は(少なくともさらにいじるなし)boost::shared_ptr
でapprently作品boost::python
で問題が発生し、取得しています質問があるので
- もしther
boost::shared_ptr
は最終的にstd::shared_ptr
のためだけのエイリアスになる場合eは(今のところC++ 0xのを使用していない以外)boost::shared_ptr
とstd::shared_ptr
間のあいまいさを解決するためのシンプルなソリューションであり、また - 。それは私の問題を自動的に解決します。
ありがとう!
PS。ブースト1.42を使用します。 – eudoxos
解決策はおそらく 'using namespace std'を一掃することでしょう。そして、すべてのstl要素に対してグローバルな検索と置換を行うのと同じくらい簡単なことができます。 – stijn
そうですね、これは解決策ですが、STLは頻繁に使用されるため、コードが読みにくくなります。おそらく私は 'std :: stringを使ってたくさん書いてみることができます。 std :: vectorを使用します。 'などの宣言を共通ヘッダーに入れます。実際には多くの 'std ::'パーツは使用されていませんが、頻繁に使用されます。 – eudoxos